home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / internet / webx / jpged26s.lzh / IDCT.S < prev    next >
Text File  |  1995-09-07  |  49KB  |  2,662 lines

  1. *
  2. *  IDCT.S
  3. *
  4. *  ùúÄUâRâTâCâôïtò╧è╖
  5. *
  6. *  c0=1
  7. *  c1=COS(pi*1/16)*sqr(2)
  8. *  c2=COS(pi*2/16)*sqr(2)
  9. *  c3=COS(pi*3/16)*sqr(2)
  10. *  c4=1
  11. *  c5=COS(pi*5/16)*sqr(2)
  12. *  c6=COS(pi*6/16)*sqr(2)
  13. *  c7=COS(pi*7/16)*sqr(2)
  14. *
  15. *     x=   0   1   2   3   4   5   6   7
  16. *  u=0 :  c0  c0  c0  c0  c0  c0  c0  c0
  17. *  u=1 :  c1  c3  c5  c7 -c7 -c5 -c3 -c1
  18. *  u=2 :  c2  c6 -c6 -c2 -c2 -c6  c6  c2
  19. *  u=3 :  c3 -c7 -c1 -c5  c5  c1  c7 -c3
  20. *  u=4 :  c4 -c4 -c4  c4  c4 -c4 -c4  c4
  21. *  u=5 :  c5 -c1  c7  c3 -c3 -c7  c1 -c5
  22. *  u=6 :  c6 -c2  c2 -c6 -c6  c2 -c2  c6
  23. *  u=7 :  c7 -c5  c3 -c1  c1 -c3  c5 -c7
  24. *
  25. .include    work.inc
  26.     .text
  27.     .xdef    IDCT
  28.     .xdef    IDCT_SU1,IDCT_SU2,IDCT_SU3,IDCT_SU4,IDCT_SU5,IDCT_SU6,IDCT_SU7,IDCT_SU8
  29.     .xdef   IDCT_3_2
  30. *
  31. *  Inverse Digital Cosine Transformation
  32. *
  33. *     suv(w),sxy(w)...a0-8*2
  34. *     sxy 256èKÆ▓ data
  35. *
  36. *  ôⁿù═
  37. *    d0...âWâOâUâOâXâLâââôé┼ì┼îπé⌐éτÿAæ▒é╡é─éóéΘéOé╠Éö
  38. *  Åoù═
  39. *    a0...ăé╠data
  40. *
  41. IDCT
  42.  
  43.     move.w    IDCT_TBL(pc,d0.w),d0
  44.     jmp    IDCT(pc,d0.w)
  45.  
  46. IDCT_TBL    dc.w    IDCT_64-IDCT
  47.         dc.w    IDCT_63-IDCT
  48.         dc.w    IDCT_62-IDCT
  49.         dc.w    IDCT_61-IDCT
  50.         dc.w    IDCT_60-IDCT
  51.         dc.w    IDCT_59-IDCT
  52.         dc.w    IDCT_58-IDCT
  53.         dc.w    IDCT_57-IDCT
  54.         dc.w    IDCT_56-IDCT
  55.         dc.w    IDCT_55-IDCT
  56.         dc.w    IDCT_54-IDCT
  57.         dc.w    IDCT_53-IDCT
  58.         dc.w    IDCT_52-IDCT
  59.         dc.w    IDCT_51-IDCT
  60.         dc.w    IDCT_50-IDCT
  61.         dc.w    IDCT_49-IDCT
  62.         dc.w    IDCT_48-IDCT
  63.         dc.w    IDCT_47-IDCT
  64.         dc.w    IDCT_46-IDCT
  65.         dc.w    IDCT_45-IDCT
  66.         dc.w    IDCT_44-IDCT
  67.         dc.w    IDCT_43-IDCT
  68.         dc.w    IDCT_42-IDCT
  69.         dc.w    IDCT_41-IDCT
  70.         dc.w    IDCT_40-IDCT
  71.         dc.w    IDCT_39-IDCT
  72.         dc.w    IDCT_38-IDCT
  73.         dc.w    IDCT_37-IDCT
  74.         dc.w    IDCT_36-IDCT
  75.         dc.w    IDCT_35-IDCT
  76.         dc.w    IDCT_34-IDCT
  77.         dc.w    IDCT_33-IDCT
  78.         dc.w    IDCT_32-IDCT
  79.         dc.w    IDCT_31-IDCT
  80.         dc.w    IDCT_30-IDCT
  81.         dc.w    IDCT_29-IDCT
  82.         dc.w    IDCT_28-IDCT
  83.         dc.w    IDCT_27-IDCT
  84.         dc.w    IDCT_26-IDCT
  85.         dc.w    IDCT_25-IDCT
  86.         dc.w    IDCT_24-IDCT
  87.         dc.w    IDCT_23-IDCT
  88.         dc.w    IDCT_22-IDCT
  89.         dc.w    IDCT_21-IDCT
  90.         dc.w    IDCT_20-IDCT
  91.         dc.w    IDCT_19-IDCT
  92.         dc.w    IDCT_18-IDCT
  93.         dc.w    IDCT_17-IDCT
  94.         dc.w    IDCT_16-IDCT
  95.         dc.w    IDCT_15-IDCT
  96.         dc.w    IDCT_14-IDCT
  97.         dc.w    IDCT_13-IDCT
  98.         dc.w    IDCT_12-IDCT
  99.         dc.w    IDCT_11-IDCT
  100.         dc.w    IDCT_10-IDCT
  101.         dc.w    IDCT_9-IDCT
  102.         dc.w    IDCT_8-IDCT
  103.         dc.w    IDCT_7-IDCT
  104.         dc.w    IDCT_6-IDCT
  105.         dc.w    IDCT_5-IDCT
  106.         dc.w    IDCT_4-IDCT
  107.         dc.w    IDCT_3-IDCT
  108.         dc.w    IDCT_2-IDCT
  109.         dc.w    IDCT_1-IDCT
  110. *
  111. *  S'(y,u)
  112. *
  113. ****************************
  114. * x0000000
  115. * 00000000
  116. * 00000000
  117. * 00000000
  118. * 00000000
  119. * 00000000
  120. * 00000000
  121. * 00000000
  122. ****************************
  123. IDCT_1
  124.       move.w  6*8*2+1*2(a0),d0
  125.       move.w  d0,0*8*2(a0)
  126.       move.w  d0,4*8*2(a0)
  127.       rts
  128.  
  129. ****************************
  130. * xx000000
  131. * 00000000
  132. * 00000000
  133. * 00000000
  134. * 00000000
  135. * 00000000
  136. * 00000000
  137. * 00000000
  138. ****************************
  139. IDCT_2
  140.  
  141.       movea.w 5*8*2+1*2(a0),a1
  142.       move.w  6*8*2+1*2(a0),d5
  143.  
  144.       movem.w  (a6,a1.w),d0-d3    COS1,COS3,COS5,COS7
  145.  
  146.       move.w  d5,d4
  147.       move.w  d4,d7
  148.       move.w  d5,d6
  149.  
  150.       sub.w   d1,d6        * S(6,y) = d5-d1
  151.       add.w   d1,d1
  152.       add.w   d6,d1        * S(1,y) = d5+d1 = d5-d1 + 2*d1 = S(6,y) + 2*d1
  153.  
  154.       sub.w   d2,d5        * S(5,y) = d5-d2
  155.       add.w   d2,d2
  156.       add.w   d5,d2        * S(2,y) = d5+d2 = d5-d2 + 2*d2 = S(5,y) +2*d2
  157.  
  158.       sub.w   d0,d7       * S(7,y) = d5-d0
  159.       add.w   d0,d0
  160.       add.w   d7,d0        * S(0,y) = d5+d0 = d5-d0 + 2*d0 = S(7,y) + 2*d0
  161.  
  162.       sub.w   d3,d4        * S(4,y) = d5-d3
  163.       add.w   d3,d3
  164.       add.w   d4,d3        * S(3,y) = d5+d3 = d5-d3 + 2*d3 = S(4,y) +2*d3
  165.  
  166.       lea.l    8*8*2(a0),a0
  167.       movem.w  d0-d7,-(a0)
  168.       movem.w  d0-d7,-(a0)
  169.       movem.w  d0-d7,-(a0)
  170.       movem.w  d0-d7,-(a0)
  171.  
  172.       movem.w  d0-d7,-(a0)
  173.       movem.w  d0-d7,-(a0)
  174.       movem.w  d0-d7,-(a0)
  175.       movem.w  d0-d7,-(a0)
  176.       rts
  177.  
  178. ****************************
  179. * xx000000
  180. * x0000000
  181. * 00000000
  182. * 00000000
  183. * 00000000
  184. * 00000000
  185. * 00000000
  186. * 00000000
  187. ****************************
  188. IDCT_3
  189.  
  190.   tst.w   5*8*2+1*2(a0)
  191.   beq     IDCT_3_1
  192.  
  193.     lea    -(64*2-2*2)(sp),sp
  194.     lea.l    6*16(a0),a0
  195.     move.w    -1*16+1*2(a0),-(sp)
  196.     lea.l    @f(pc),a5
  197.     bra    IDCT_SU2
  198.  
  199. ****************************
  200. * x0000000
  201. * x0000000
  202. * 00000000
  203. * 00000000
  204. * 00000000
  205. * 00000000
  206. * 00000000
  207. * 00000000
  208. ****************************
  209. IDCT_3_1
  210.  
  211.   movea.w 6*8*2+2*2(a0),a1
  212.   move.w  6*8*2+1*2(a0),d5
  213.  
  214. IDCT_3_2
  215.  
  216.       movem.w (a6,a1.w),d0-d3    COS1
  217.  
  218.       move.w  d5,d4
  219.       move.w  d4,d7
  220.       move.w  d5,d6
  221.  
  222.       sub.w   d0,d7    * S'(u,7) = d5-d0
  223.       add.w   d0,d0
  224.       add.w   d7,d0    * S'(u,0) = d5+d0 = d5-d0 +2*d0 = S'(u,7) + 2*d0
  225.  
  226.       sub.w   d1,d6    * S'(u,6) = d5-d4
  227.       add.w   d1,d1
  228.       add.w   d6,d1    * S'(u,1) = d5+d4 = d5-d4 + 2*d4 = S'(u,6) + 2*d4
  229.  
  230.       sub.w   d2,d5    * S'(u,5) = d5-d4
  231.       add.w   d2,d2
  232.       add.w   d5,d2    * S'(u,2) = d5+d4 = d5-d4 + 2*d4 = S'(u,5) + 2*d4
  233.  
  234.       sub.w   d3,d4    * S'(u,4) = d5-d3
  235.       add.w   d3,d3
  236.       add.w   d4,d3    * S'(u,3) = d5+d3 = d5-d3 + 2*d3 = S'(u,4) + 2*d3
  237.  
  238.       move.w  d0,a2
  239.       swap.w  d0
  240.       move.w  a2,d0
  241.       move.l  d0,(a0)+
  242.       move.l  d0,(a0)+
  243.       move.l  d0,(a0)+
  244.       move.l  d0,(a0)+
  245.  
  246.       move.w  d1,d0
  247.       swap.w  d0
  248.       move.w  d1,d0
  249.       move.l  d0,(a0)+
  250.       move.l  d0,(a0)+
  251.       move.l  d0,(a0)+
  252.       move.l  d0,(a0)+
  253.  
  254.       move.w  d2,d0
  255.       swap.w  d0
  256.       move.w  d2,d0
  257.       move.l  d0,(a0)+
  258.       move.l  d0,(a0)+
  259.       move.l  d0,(a0)+
  260.       move.l  d0,(a0)+
  261.  
  262.       move.w  d3,d0
  263.       swap.w  d0
  264.       move.w  d3,d0
  265.       move.l  d0,(a0)+
  266.       move.l  d0,(a0)+
  267.       move.l  d0,(a0)+
  268.       move.l  d0,(a0)+
  269.  
  270.       move.w  d4,d0
  271.       swap.w  d0
  272.       move.w  d4,d0
  273.       move.l  d0,(a0)+
  274.       move.l  d0,(a0)+
  275.       move.l  d0,(a0)+
  276.       move.l  d0,(a0)+
  277.  
  278.       move.w  d5,d0
  279.       swap.w  d0
  280.       move.w  d5,d0
  281.       move.l  d0,(a0)+
  282.       move.l  d0,(a0)+
  283.       move.l  d0,(a0)+
  284.       move.l  d0,(a0)+
  285.  
  286.       move.w  d6,d0
  287.       swap.w  d0
  288.       move.w  d6,d0
  289.       move.l  d0,(a0)+
  290.       move.l  d0,(a0)+
  291.       move.l  d0,(a0)+
  292.       move.l  d0,(a0)+
  293.  
  294.       move.w  d7,d0
  295.       swap.w  d0
  296.       move.w  d7,d0
  297.       move.l  d0,(a0)+
  298.       move.l  d0,(a0)+
  299.       move.l  d0,(a0)+
  300.       move.l  d0,(a0)+
  301.     lea    -8*8*2(a0),a0
  302.       rts
  303.  
  304.  
  305. ****************************
  306. * xx000000
  307. * x0000000
  308. * x0000000
  309. * 00000000
  310. * 00000000
  311. * 00000000
  312. * 00000000
  313. * 00000000
  314. ****************************
  315. IDCT_4
  316.     lea    -(64*2-2*2)(sp),sp
  317.     lea    6*16(a0),a0
  318.     move.w    -1*16+1*2(a0),-(sp)
  319.     lea.l    @f(pc),a5
  320.     bra    IDCT_SU3
  321. @@
  322. dehehe
  323.     dc.w    IDCT_clr6_SU1-*-2
  324.  
  325.  
  326. ****************************
  327. * xx000000
  328. * xx000000
  329. * x0000000
  330. * 00000000
  331. * 00000000
  332. * 00000000
  333. * 00000000
  334. * 00000000
  335. ****************************
  336. IDCT_5
  337.  
  338.     lea    -(64*2-2*2)(sp),sp
  339.     lea.l    5*16(a0),a0
  340.  
  341.     lea.l    @f(pc),a5
  342.     bra    IDCT_SU2
  343. @@    dc.w    IDCT_SU3-*-2
  344.     dc.w    IDCT_clr6-*-2
  345.  
  346. ****************************
  347. * xxx00000
  348. * xx000000
  349. * x0000000
  350. * 00000000
  351. * 00000000
  352. * 00000000
  353. * 00000000
  354. * 00000000
  355. ****************************
  356. IDCT_6
  357.  
  358.     lea    -(64*2-3*2)(sp),sp
  359.     lea    5*16(a0),a0
  360.     move.w    -1*16+1*2(a0),-(sp)
  361.  
  362.     lea.l    @f(pc),a5
  363.     bra    IDCT_SU2
  364. @@    dc.w    IDCT_SU3-*-2
  365.     dc.w    IDCT_clr5_SU1-*-2
  366.  
  367. ****************************
  368. * xxxx0000
  369. * xx000000
  370. * x0000000
  371. * 00000000
  372. * 00000000
  373. * 00000000
  374. * 00000000
  375. * 00000000
  376. ****************************
  377. IDCT_7
  378.  
  379.     lea    -(64*2-4*2)(sp),sp
  380.     lea.l    4*16(a0),a0
  381.     move.w    -1*16+1*2(a0),-(sp)
  382.  
  383.     lea.l    @f(pc),a5
  384.     bra    IDCT_SU1
  385.  
  386. ****************************
  387. * xxxx0000
  388. * xxx00000
  389. * x0000000
  390. * 00000000
  391. * 00000000
  392. * 00000000
  393. * 00000000
  394. * 00000000
  395. ****************************
  396. IDCT_8
  397.  
  398.     lea    -(64*2-4*2)(sp),sp
  399.     lea.l    4*16(a0),a0
  400.     move.w    -1*16+1*2(a0),-(sp)
  401.  
  402.     lea.l    @f(pc),a5
  403.     bra    IDCT_SU2
  404. @@    dc.w    IDCT_SU2-*-2
  405.     dc.w    IDCT_SU3-*-2
  406.     dc.w    IDCT_clr4_SU1-*-2
  407. ****************************
  408. * xxxx0000
  409. * xxx00000
  410. * xx000000
  411. * 00000000
  412. * 00000000
  413. * 00000000
  414. * 00000000
  415. * 00000000
  416. ****************************
  417. IDCT_9
  418.  
  419.     lea    -(64*2-4*2)(sp),sp
  420.     lea.l    4*16(a0),a0
  421.     move.w    -1*16+1*2(a0),-(sp)
  422.  
  423.     lea.l    @f(pc),a5
  424.     bra    IDCT_SU2
  425. @@    dc.w    IDCT_SU3-*-2
  426.     dc.w    IDCT_SU3-*-2
  427.     dc.w    IDCT_clr4_SU1-*-2
  428.  
  429. ****************************
  430. * xxxx0000
  431. * xxx00000
  432. * xx000000
  433. * x0000000
  434. * 00000000
  435. * 00000000
  436. * 00000000
  437. * 00000000
  438. ****************************
  439. IDCT_10
  440.  
  441.     lea    -(64*2-4*2)(sp),sp
  442.     lea.l    4*16(a0),a0
  443.     move.w    -1*16+1*2(a0),-(sp)
  444.  
  445.     lea.l    @f(pc),a5
  446.     bra    IDCT_SU2
  447. @@    dc.w    IDCT_SU3-*-2
  448.     dc.w    IDCT_SU4-*-2
  449.     dc.w    IDCT_clr4_SU1-*-2
  450.  
  451.  
  452.  
  453. IDCT_11
  454.     lea    -(64*2-4*2)(sp),sp
  455.     lea.l    4*16(a0),a0
  456.     move.w    -1*16+1*2(a0),-(sp)
  457.  
  458.     lea.l    @f(pc),a5
  459.     bra    IDCT_SU2
  460. @@    dc.w    IDCT_SU3-*-2
  461.     dc.w    IDCT_SU5-*-2
  462.     dc.w    IDCT_clr4_SU1-*-2
  463.  
  464.  
  465.  
  466. IDCT_12
  467.     lea    -(64*2-4*2)(sp),sp
  468.     lea.l    4*16(a0),a0
  469.     move.w    -1*16+1*2(a0),-(sp)
  470.  
  471.     lea.l    @f(pc),a5
  472.     bra    IDCT_SU2
  473.  
  474.  
  475. IDCT_13
  476.     lea    -(64*2-4*2)(sp),sp
  477.     lea.l    4*16(a0),a0
  478.     move.w    -1*16+1*2(a0),-(sp)
  479.  
  480.     lea.l    @f(pc),a5
  481.     bra    IDCT_SU3
  482. @@    dc.w    IDCT_SU4-*-2
  483.     dc.w    IDCT_SU5-*-2
  484.     dc.w    IDCT_clr4_SU1-*-2
  485.  
  486.  
  487. IDCT_14
  488.     lea    -(64*2-4*2)(sp),sp
  489.     lea.l    3*16(a0),a0
  490.  
  491.     lea.l    @f(pc),a5
  492.     bra    IDCT_SU2
  493. @@    dc.w    IDCT_SU3-*-2
  494.     dc.w    IDCT_SU4-*-2
  495.     dc.w    IDCT_SU5-*-2
  496.     dc.w    IDCT_clr4-*-2
  497.  
  498.  
  499. IDCT_15
  500.     lea    -(64*2-5*2)(sp),sp
  501.     lea.l    3*16(a0),a0
  502.  
  503.     lea.l    @f(pc),a5
  504.     bra    IDCT_SU2
  505. @@    dc.w    IDCT_SU3-*-2
  506.     dc.w    IDCT_SU4-*-2
  507.     dc.w    IDCT_SU5-*-2
  508.     dc.w    IDCT_SU1-*-2
  509.     dc.w    IDCT_clr3-*-2
  510.  
  511.  
  512. IDCT_16
  513.     lea    -(64*2-6*2)(sp),sp
  514.     lea.l    3*16(a0),a0
  515.     move.w    -1*16+1*2(a0),-(sp)
  516.  
  517.     lea.l    @f(pc),a5
  518.     bra    IDCT_SU2
  519. @@    dc.w    IDCT_SU3-*-2
  520.     dc.w    IDCT_SU4-*-2
  521.     dc.w    IDCT_SU5-*-2
  522.     dc.w    IDCT_SU1-*-2
  523.     dc.w    IDCT_clr2_SU1-*-2
  524.  
  525.  
  526.  
  527. IDCT_17
  528.     lea    -(64*2-6*2)(sp),sp
  529.     lea.l    3*16(a0),a0
  530.     move.w    -1*16+1*2(a0),-(sp)
  531.  
  532.     lea.l    @f(pc),a5
  533.     bra    IDCT_SU2
  534.  
  535. IDCT_18
  536.     lea    -(64*2-6*2)(sp),sp
  537.     lea.l    3*16(a0),a0
  538.     move.w    -1*16+1*2(a0),-(sp)
  539.  
  540.     lea.l    @f(pc),a5
  541.     bra    IDCT_SU3
  542. @@    dc.w    IDCT_SU3-*-2
  543.     dc.w    IDCT_SU4-*-2
  544.     dc.w    IDCT_SU5-*-2
  545.     dc.w    IDCT_SU2-*-2
  546.     dc.w    IDCT_clr2_SU1-*-2
  547.  
  548. IDCT_19
  549.     lea    -(64*2-6*2)(sp),sp
  550.     lea.l    3*16(a0),a0
  551.     move.w    -1*16+1*2(a0),-(sp)
  552.  
  553.     lea.l    @f(pc),a5
  554.     bra    IDCT_SU3
  555. @@    dc.w    IDCT_SU4-*-2
  556.     dc.w    IDCT_SU4-*-2
  557.     dc.w    IDCT_SU5-*-2
  558.     dc.w    IDCT_SU2-*-2
  559.     dc.w    IDCT_clr2_SU1-*-2
  560.  
  561. IDCT_20
  562.     lea    -(64*2-6*2)(sp),sp
  563.     lea.l    3*16(a0),a0
  564.     move.w    -1*16+1*2(a0),-(sp)
  565.  
  566.     lea.l    @f(pc),a5
  567.     bra    IDCT_SU3
  568. @@    dc.w    IDCT_SU4-*-2
  569.     dc.w    IDCT_SU5-*-2
  570.     dc.w    IDCT_SU5-*-2
  571.     dc.w    IDCT_SU2-*-2
  572.     dc.w    IDCT_clr2_SU1-*-2
  573.  
  574.  
  575. IDCT_21
  576.     lea    -(64*2-6*2)(sp),sp
  577.     lea.l    3*16(a0),a0
  578.     move.w    -1*16+1*2(a0),-(sp)
  579.  
  580.     lea.l    @f(pc),a5
  581.     bra    IDCT_SU3
  582. @@    dc.w    IDCT_SU4-*-2
  583.     dc.w    IDCT_SU5-*-2
  584.     dc.w    IDCT_SU6-*-2
  585.     dc.w    IDCT_SU2-*-2
  586.     dc.w    IDCT_clr2_SU1-*-2
  587.  
  588.  
  589. IDCT_22
  590.     lea    -(64*2-6*2)(sp),sp
  591.     lea.l    3*16(a0),a0
  592.     move.w    -1*16+1*2(a0),-(sp)
  593.  
  594.     lea.l    @f(pc),a5
  595.     bra    IDCT_SU3
  596. @@    dc.w    IDCT_SU4-*-2
  597.     dc.w    IDCT_SU5-*-2
  598.     dc.w    IDCT_SU7-*-2
  599.     dc.w    IDCT_SU2-*-2
  600.     dc.w    IDCT_clr2_SU1-*-2
  601.  
  602. IDCT_23
  603.     lea    -(64*2-6*2)(sp),sp
  604.     lea.l    3*16(a0),a0
  605.     move.w    -1*16+1*2(a0),-(sp)
  606.  
  607.     lea.l    @f(pc),a5
  608.     bra    IDCT_SU3
  609. @@    dc.w    IDCT_SU4-*-2
  610.     dc.w    IDCT_SU6-*-2
  611.     dc.w    IDCT_SU7-*-2
  612.     dc.w    IDCT_SU2-*-2
  613.     dc.w    IDCT_clr2_SU1-*-2
  614.  
  615. IDCT_24
  616.     lea    -(64*2-6*2)(sp),sp
  617.     lea.l    3*16(a0),a0
  618.     move.w    -1*16+1*2(a0),-(sp)
  619.  
  620.     lea.l    @f(pc),a5
  621.     bra    IDCT_SU3
  622.  
  623. IDCT_25
  624.     lea    -(64*2-6*2)(sp),sp
  625.     lea.l    3*16(a0),a0
  626.     move.w    -1*16+1*2(a0),-(sp)
  627.  
  628.     lea.l    @f(pc),a5
  629.     bra    IDCT_SU4
  630. @@    dc.w    IDCT_SU5-*-2
  631.     dc.w    IDCT_SU6-*-2
  632.     dc.w    IDCT_SU7-*-2
  633.     dc.w    IDCT_SU2-*-2
  634.     dc.w    IDCT_clr2_SU1-*-2
  635.  
  636.  
  637. IDCT_26
  638.     lea    -(64*2-6*2)(sp),sp
  639.     lea.l    3*16(a0),a0
  640.     move.w    -1*16+1*2(a0),-(sp)
  641.  
  642.     lea.l    @f(pc),a5
  643.     bra    IDCT_SU4
  644. @@    dc.w    IDCT_SU5-*-2
  645.     dc.w    IDCT_SU6-*-2
  646.     dc.w    IDCT_SU7-*-2
  647.     dc.w    IDCT_SU3-*-2
  648.     dc.w    IDCT_clr2_SU1-*-2
  649.  
  650.  
  651. IDCT_27
  652.     lea    -(64*2-6*2)(sp),sp
  653.     lea.l    2*16(a0),a0
  654.  
  655.     lea.l    @f(pc),a5
  656.     bra    IDCT_SU2
  657. @@    dc.w    IDCT_SU4-*-2
  658.     dc.w    IDCT_SU5-*-2
  659.     dc.w    IDCT_SU6-*-2
  660.     dc.w    IDCT_SU7-*-2
  661.     dc.w    IDCT_SU3-*-2
  662.     dc.w    IDCT_clr2-*-2
  663.  
  664.  
  665. IDCT_28
  666.     lea    -(64*2-7*2)(sp),sp
  667.     lea.l    1*16(a0),a0
  668.  
  669.     lea.l    @f(pc),a5
  670.     bra    IDCT_SU1
  671. @@    dc.w    IDCT_SU2-*-2
  672.     dc.w    IDCT_SU4-*-2
  673.     dc.w    IDCT_SU5-*-2
  674.     dc.w    IDCT_SU6-*-2
  675.     dc.w    IDCT_SU7-*-2
  676.     dc.w    IDCT_SU3-*-2
  677.     dc.w    IDCT_clr1-*-2
  678.  
  679. IDCT_29
  680.     lea    -(64*2-8*2)(sp),sp
  681.     move.w    1*2(a0),-(sp)
  682.     lea.l    16(a0),a0
  683.  
  684.     lea.l    @f(pc),a5
  685.     bra    IDCT_SU1
  686.  
  687. IDCT_30
  688.     lea    -(64*2-8*2)(sp),sp
  689.     move.w    1*2(a0),-(sp)
  690.     lea.l    16(a0),a0
  691.  
  692.     lea.l    @f(pc),a5
  693.     bra    IDCT_SU2
  694. @@    dc.w    IDCT_SU2-*-2
  695.     dc.w    IDCT_SU4-*-2
  696.     dc.w    IDCT_SU5-*-2
  697.     dc.w    IDCT_SU6-*-2
  698.     dc.w    IDCT_SU7-*-2
  699.     dc.w    IDCT_SU3-*-2
  700.     dc.w    IDCT_normal_SU1-*-2
  701.  
  702. IDCT_31
  703.     lea    -(64*2-8*2)(sp),sp
  704.     move.w    1*2(a0),-(sp)
  705.     lea.l    16(a0),a0
  706.  
  707.     lea.l    @f(pc),a5
  708.     bra    IDCT_SU2
  709. @@    dc.w    IDCT_SU3-*-2
  710.     dc.w    IDCT_SU4-*-2
  711.     dc.w    IDCT_SU5-*-2
  712.     dc.w    IDCT_SU6-*-2
  713.     dc.w    IDCT_SU7-*-2
  714.     dc.w    IDCT_SU3-*-2
  715.     dc.w    IDCT_normal_SU1-*-2
  716.  
  717. IDCT_32
  718.     lea    -(64*2-8*2)(sp),sp
  719.     move.w    1*2(a0),-(sp)
  720.     lea.l    16(a0),a0
  721.  
  722.     lea.l    @f(pc),a5
  723.     bra    IDCT_SU2
  724. @@    dc.w    IDCT_SU3-*-2
  725.     dc.w    IDCT_SU4-*-2
  726.     dc.w    IDCT_SU5-*-2
  727.     dc.w    IDCT_SU6-*-2
  728.     dc.w    IDCT_SU7-*-2
  729.     dc.w    IDCT_SU4-*-2
  730.     dc.w    IDCT_normal_SU1-*-2
  731.  
  732. IDCT_33
  733.     lea    -(64*2-8*2)(sp),sp
  734.     move.w    1*2(a0),-(sp)
  735.     lea.l    16(a0),a0
  736.  
  737.     lea.l    @f(pc),a5
  738.     bra    IDCT_SU2
  739. @@    dc.w    IDCT_SU3-*-2
  740.     dc.w    IDCT_SU5-*-2
  741.     dc.w    IDCT_SU5-*-2
  742.     dc.w    IDCT_SU6-*-2
  743.     dc.w    IDCT_SU7-*-2
  744.     dc.w    IDCT_SU4-*-2
  745.     dc.w    IDCT_normal_SU1-*-2
  746.  
  747. IDCT_34
  748.     lea    -(64*2-8*2)(sp),sp
  749.     move.w    1*2(a0),-(sp)
  750.     lea.l    16(a0),a0
  751.  
  752.     lea.l    @f(pc),a5
  753.     bra    IDCT_SU2
  754. @@    dc.w    IDCT_SU3-*-2
  755.     dc.w    IDCT_SU5-*-2
  756.     dc.w    IDCT_SU6-*-2
  757.     dc.w    IDCT_SU6-*-2
  758.     dc.w    IDCT_SU7-*-2
  759.     dc.w    IDCT_SU4-*-2
  760.     dc.w    IDCT_normal_SU1-*-2
  761.  
  762. IDCT_35
  763.     lea    -(64*2-8*2)(sp),sp
  764.     move.w    1*2(a0),-(sp)
  765.     lea.l    16(a0),a0
  766.  
  767.     lea.l    @f(pc),a5
  768.     bra    IDCT_SU2
  769. @@    dc.w    IDCT_SU3-*-2
  770.     dc.w    IDCT_SU5-*-2
  771.     dc.w    IDCT_SU6-*-2
  772.     dc.w    IDCT_SU7-*-2
  773.     dc.w    IDCT_SU7-*-2
  774.     dc.w    IDCT_SU4-*-2
  775.     dc.w    IDCT_normal_SU1-*-2
  776.  
  777. IDCT_36
  778.     lea    -(64*2-8*2)(sp),sp
  779.     move.w    1*2(a0),-(sp)
  780.     lea.l    16(a0),a0
  781.  
  782.     lea.l    @f(pc),a5
  783.     bra    IDCT_SU2
  784. @@    dc.w    IDCT_SU3-*-2
  785.     dc.w    IDCT_SU5-*-2
  786.     dc.w    IDCT_SU6-*-2
  787.     dc.w    IDCT_SU7-*-2
  788.     dc.w    IDCT_SU8-*-2
  789.     dc.w    IDCT_SU4-*-2
  790.     dc.w    IDCT_normal_SU1-*-2
  791.  
  792. IDCT_37
  793.     lea    -(64*2-8*2)(sp),sp
  794.     move.w    1*2(a0),-(sp)
  795.     lea.l    16(a0),a0
  796.  
  797.     lea.l    @f(pc),a5
  798.     bra    IDCT_SU2
  799. @@    dc.w    IDCT_SU3-*-2
  800.     dc.w    IDCT_SU5-*-2
  801.     dc.w    IDCT_SU6-*-2
  802.     dc.w    IDCT_SU8-*-2
  803.     dc.w    IDCT_SU8-*-2
  804.     dc.w    IDCT_SU4-*-2
  805.     dc.w    IDCT_normal_SU1-*-2
  806.  
  807. IDCT_38
  808.     lea    -(64*2-8*2)(sp),sp
  809.     move.w    1*2(a0),-(sp)
  810.     lea.l    16(a0),a0
  811.  
  812.     lea.l    @f(pc),a5
  813.     bra    IDCT_SU2
  814. @@    dc.w    IDCT_SU3-*-2
  815.     dc.w    IDCT_SU5-*-2
  816.     dc.w    IDCT_SU7-*-2
  817.     dc.w    IDCT_SU8-*-2
  818.     dc.w    IDCT_SU8-*-2
  819.     dc.w    IDCT_SU4-*-2
  820.     dc.w    IDCT_normal_SU1-*-2
  821.  
  822. IDCT_39
  823.     lea    -(64*2-8*2)(sp),sp
  824.     move.w    1*2(a0),-(sp)
  825.     lea.l    16(a0),a0
  826.  
  827.     lea.l    @f(pc),a5
  828.     bra    IDCT_SU2
  829. @@    dc.w    IDCT_SU3-*-2
  830.     dc.w    IDCT_SU6-*-2
  831.     dc.w    IDCT_SU7-*-2
  832.     dc.w    IDCT_SU8-*-2
  833.     dc.w    IDCT_SU8-*-2
  834.     dc.w    IDCT_SU4-*-2
  835.     dc.w    IDCT_normal_SU1-*-2
  836.  
  837. IDCT_40
  838.     lea    -(64*2-8*2)(sp),sp
  839.     move.w    1*2(a0),-(sp)
  840.     lea.l    16(a0),a0
  841.  
  842.     lea.l    @f(pc),a5
  843.     bra    IDCT_SU2
  844. @@    dc.w    IDCT_SU3-*-2
  845.     dc.w    IDCT_SU6-*-2
  846.     dc.w    IDCT_SU7-*-2
  847.     dc.w    IDCT_SU8-*-2
  848.     dc.w    IDCT_SU8-*-2
  849.     dc.w    IDCT_SU5-*-2
  850.     dc.w    IDCT_normal_SU1-*-2
  851.  
  852. IDCT_41
  853.     lea    -(64*2-8*2)(sp),sp
  854.     move.w    1*2(a0),-(sp)
  855.     lea.l    16(a0),a0
  856.  
  857.     lea.l    @f(pc),a5
  858.     bra    IDCT_SU2
  859. @@    dc.w    IDCT_SU4-*-2
  860.     dc.w    IDCT_SU6-*-2
  861.     dc.w    IDCT_SU7-*-2
  862.     dc.w    IDCT_SU8-*-2
  863.     dc.w    IDCT_SU8-*-2
  864.     dc.w    IDCT_SU5-*-2
  865.     dc.w    IDCT_normal_SU1-*-2
  866.  
  867. IDCT_42
  868.     lea    -(64*2-8*2)(sp),sp
  869.     move.w    1*2(a0),-(sp)
  870.     lea.l    16(a0),a0
  871.  
  872.     lea.l    @f(pc),a5
  873.     bra    IDCT_SU3
  874. @@    dc.w    IDCT_SU4-*-2
  875.     dc.w    IDCT_SU6-*-2
  876.     dc.w    IDCT_SU7-*-2
  877.     dc.w    IDCT_SU8-*-2
  878.     dc.w    IDCT_SU8-*-2
  879.     dc.w    IDCT_SU5-*-2
  880.     dc.w    IDCT_normal_SU1-*-2
  881.  
  882. IDCT_43
  883.     lea    -(64*2-8*2)(sp),sp
  884.  
  885.     lea.l    @f(pc),a5
  886.     bra    IDCT_SU2
  887.  
  888. IDCT_44
  889.     lea    -(64*2-8*2)(sp),sp
  890.  
  891.     lea.l    @f(pc),a5
  892.     bra    IDCT_SU3
  893. @@    dc.w    IDCT_SU3-*-2
  894.     dc.w    IDCT_SU4-*-2
  895.     dc.w    IDCT_SU6-*-2
  896.     dc.w    IDCT_SU7-*-2
  897.     dc.w    IDCT_SU8-*-2
  898.     dc.w    IDCT_SU8-*-2
  899.     dc.w    IDCT_SU5-*-2
  900.     dc.w    IDCT_normal-*-2
  901.  
  902. IDCT_45
  903.     lea    -(64*2-8*2)(sp),sp
  904.  
  905.     lea.l    @f(pc),a5
  906.     bra    IDCT_SU3
  907. @@    dc.w    IDCT_SU4-*-2
  908.     dc.w    IDCT_SU4-*-2
  909.     dc.w    IDCT_SU6-*-2
  910.     dc.w    IDCT_SU7-*-2
  911.     dc.w    IDCT_SU8-*-2
  912.     dc.w    IDCT_SU8-*-2
  913.     dc.w    IDCT_SU5-*-2
  914.     dc.w    IDCT_normal-*-2
  915.  
  916. IDCT_46
  917.     lea    -(64*2-8*2)(sp),sp
  918.  
  919.     lea.l    @f(pc),a5
  920.     bra    IDCT_SU3
  921. @@    dc.w    IDCT_SU4-*-2
  922.     dc.w    IDCT_SU5-*-2
  923.     dc.w    IDCT_SU6-*-2
  924.     dc.w    IDCT_SU7-*-2
  925.     dc.w    IDCT_SU8-*-2
  926.     dc.w    IDCT_SU8-*-2
  927.     dc.w    IDCT_SU5-*-2
  928.     dc.w    IDCT_normal-*-2
  929.  
  930. IDCT_47
  931.     lea    -(64*2-8*2)(sp),sp
  932.  
  933.     lea.l    @f(pc),a5
  934.     bra    IDCT_SU3
  935. @@    dc.w    IDCT_SU4-*-2
  936.     dc.w    IDCT_SU5-*-2
  937.     dc.w    IDCT_SU6-*-2
  938.     dc.w    IDCT_SU7-*-2
  939.     dc.w    IDCT_SU8-*-2
  940.     dc.w    IDCT_SU8-*-2
  941.     dc.w    IDCT_SU6-*-2
  942.     dc.w    IDCT_normal-*-2
  943.  
  944.  
  945. IDCT_48
  946.     lea    -(64*2-8*2)(sp),sp
  947.  
  948.     lea.l    @f(pc),a5
  949.     bra    IDCT_SU3
  950. @@    dc.w    IDCT_SU4-*-2
  951.     dc.w    IDCT_SU5-*-2
  952.     dc.w    IDCT_SU7-*-2
  953.     dc.w    IDCT_SU7-*-2
  954.     dc.w    IDCT_SU8-*-2
  955.     dc.w    IDCT_SU8-*-2
  956.     dc.w    IDCT_SU6-*-2
  957.     dc.w    IDCT_normal-*-2
  958.  
  959. IDCT_49
  960.     lea    -(64*2-8*2)(sp),sp
  961.  
  962.     lea.l    @f(pc),a5
  963.     bra    IDCT_SU3
  964. @@    dc.w    IDCT_SU4-*-2
  965.     dc.w    IDCT_SU5-*-2
  966.     dc.w    IDCT_SU7-*-2
  967.     dc.w    IDCT_SU8-*-2
  968.     dc.w    IDCT_SU8-*-2
  969.     dc.w    IDCT_SU8-*-2
  970.     dc.w    IDCT_SU6-*-2
  971.     dc.w    IDCT_normal-*-2
  972.  
  973. IDCT_50
  974.     lea    -(64*2-8*2)(sp),sp
  975.  
  976.     lea.l    @f(pc),a5
  977.     bra    IDCT_SU3
  978. @@    dc.w    IDCT_SU4-*-2
  979.     dc.w    IDCT_SU5-*-2
  980.     dc.w    IDCT_SU8-*-2
  981.     dc.w    IDCT_SU8-*-2
  982.     dc.w    IDCT_SU8-*-2
  983.     dc.w    IDCT_SU8-*-2
  984.     dc.w    IDCT_SU6-*-2
  985.     dc.w    IDCT_normal-*-2
  986.  
  987. IDCT_51
  988.     lea    -(64*2-8*2)(sp),sp
  989.  
  990.     lea.l    @f(pc),a5
  991.     bra    IDCT_SU3
  992. @@    dc.w    IDCT_SU4-*-2
  993.     dc.w    IDCT_SU5-*-2
  994.     dc.w    IDCT_SU8-*-2
  995.     dc.w    IDCT_SU8-*-2
  996.     dc.w    IDCT_SU8-*-2
  997.     dc.w    IDCT_SU8-*-2
  998.     dc.w    IDCT_SU7-*-2
  999.     dc.w    IDCT_normal-*-2
  1000.  
  1001. IDCT_52
  1002.     lea    -(64*2-8*2)(sp),sp
  1003.  
  1004.     lea.l    @f(pc),a5
  1005.     bra    IDCT_SU3
  1006. @@    dc.w    IDCT_SU4-*-2
  1007.     dc.w    IDCT_SU6-*-2
  1008.     dc.w    IDCT_SU8-*-2
  1009.     dc.w    IDCT_SU8-*-2
  1010.     dc.w    IDCT_SU8-*-2
  1011.     dc.w    IDCT_SU8-*-2
  1012.     dc.w    IDCT_SU7-*-2
  1013.     dc.w    IDCT_normal-*-2
  1014.  
  1015. IDCT_53
  1016.     lea    -(64*2-8*2)(sp),sp
  1017.  
  1018.     lea.l    @f(pc),a5
  1019.     bra    IDCT_SU3
  1020. @@    dc.w    IDCT_SU5-*-2
  1021.     dc.w    IDCT_SU6-*-2
  1022.     dc.w    IDCT_SU8-*-2
  1023.     dc.w    IDCT_SU8-*-2
  1024.     dc.w    IDCT_SU8-*-2
  1025.     dc.w    IDCT_SU8-*-2
  1026.     dc.w    IDCT_SU7-*-2
  1027.     dc.w    IDCT_normal-*-2
  1028.  
  1029. IDCT_54
  1030.     lea    -(64*2-8*2)(sp),sp
  1031.  
  1032.     lea.l    @f(pc),a5
  1033.     bra    IDCT_SU4
  1034. @@    dc.w    IDCT_SU5-*-2
  1035.     dc.w    IDCT_SU6-*-2
  1036.     dc.w    IDCT_SU8-*-2
  1037.     dc.w    IDCT_SU8-*-2
  1038.     dc.w    IDCT_SU8-*-2
  1039.     dc.w    IDCT_SU8-*-2
  1040.     dc.w    IDCT_SU7-*-2
  1041.     dc.w    IDCT_normal-*-2
  1042.  
  1043. IDCT_55
  1044.     lea    -(64*2-8*2)(sp),sp
  1045.  
  1046.     lea.l    @f(pc),a5
  1047.     bra    IDCT_SU5
  1048. @@    dc.w    IDCT_SU5-*-2
  1049.     dc.w    IDCT_SU6-*-2
  1050.     dc.w    IDCT_SU8-*-2
  1051.     dc.w    IDCT_SU8-*-2
  1052.     dc.w    IDCT_SU8-*-2
  1053.     dc.w    IDCT_SU8-*-2
  1054.     dc.w    IDCT_SU7-*-2
  1055.     dc.w    IDCT_normal-*-2
  1056.  
  1057. IDCT_56
  1058.     lea    -(64*2-8*2)(sp),sp
  1059.  
  1060.     lea.l    @f(pc),a5
  1061.     bra    IDCT_SU5
  1062. @@    dc.w    IDCT_SU6-*-2
  1063.     dc.w    IDCT_SU6-*-2
  1064.     dc.w    IDCT_SU8-*-2
  1065.     dc.w    IDCT_SU8-*-2
  1066.     dc.w    IDCT_SU8-*-2
  1067.     dc.w    IDCT_SU8-*-2
  1068.     dc.w    IDCT_SU7-*-2
  1069.     dc.w    IDCT_normal-*-2
  1070.  
  1071. IDCT_57
  1072.     lea    -(64*2-8*2)(sp),sp
  1073.  
  1074.     lea.l    @f(pc),a5
  1075.     bra    IDCT_SU5
  1076. @@    dc.w    IDCT_SU6-*-2
  1077.     dc.w    IDCT_SU7-*-2
  1078.     dc.w    IDCT_SU8-*-2
  1079.     dc.w    IDCT_SU8-*-2
  1080.     dc.w    IDCT_SU8-*-2
  1081.     dc.w    IDCT_SU8-*-2
  1082.     dc.w    IDCT_SU7-*-2
  1083.     dc.w    IDCT_normal-*-2
  1084.  
  1085.  
  1086. IDCT_58
  1087.     lea    -(64*2-8*2)(sp),sp
  1088.  
  1089.     lea.l    @f(pc),a5
  1090.     bra    IDCT_SU5
  1091. @@    dc.w    IDCT_SU6-*-2
  1092.     dc.w    IDCT_SU7-*-2
  1093.     dc.w    IDCT_SU8-*-2
  1094.     dc.w    IDCT_SU8-*-2
  1095.     dc.w    IDCT_SU8-*-2
  1096.     dc.w    IDCT_SU8-*-2
  1097.     dc.w    IDCT_SU8-*-2
  1098.     dc.w    IDCT_normal-*-2
  1099.  
  1100. IDCT_59
  1101.     lea    -(64*2-8*2)(sp),sp
  1102.  
  1103.     lea.l    @f(pc),a5
  1104.     bra    IDCT_SU5
  1105. @@    dc.w    IDCT_SU6-*-2
  1106.     dc.w    IDCT_SU8-*-2
  1107.     dc.w    IDCT_SU8-*-2
  1108.     dc.w    IDCT_SU8-*-2
  1109.     dc.w    IDCT_SU8-*-2
  1110.     dc.w    IDCT_SU8-*-2
  1111.     dc.w    IDCT_SU8-*-2
  1112.     dc.w    IDCT_normal-*-2
  1113.  
  1114. IDCT_60
  1115.     lea    -(64*2-8*2)(sp),sp
  1116.  
  1117.     lea.l    @f(pc),a5
  1118.     bra    IDCT_SU5
  1119. @@    dc.w    IDCT_SU7-*-2
  1120.     dc.w    IDCT_SU8-*-2
  1121.     dc.w    IDCT_SU8-*-2
  1122.     dc.w    IDCT_SU8-*-2
  1123.     dc.w    IDCT_SU8-*-2
  1124.     dc.w    IDCT_SU8-*-2
  1125.     dc.w    IDCT_SU8-*-2
  1126.     dc.w    IDCT_normal-*-2
  1127.  
  1128. IDCT_61
  1129.     lea    -(64*2-8*2)(sp),sp
  1130.  
  1131.     lea.l    @f(pc),a5
  1132.     bra    IDCT_SU6
  1133. @@    dc.w    IDCT_SU7-*-2
  1134.     dc.w    IDCT_SU8-*-2
  1135.     dc.w    IDCT_SU8-*-2
  1136.     dc.w    IDCT_SU8-*-2
  1137.     dc.w    IDCT_SU8-*-2
  1138.     dc.w    IDCT_SU8-*-2
  1139.     dc.w    IDCT_SU8-*-2
  1140.     dc.w    IDCT_normal-*-2
  1141.  
  1142. IDCT_62
  1143.     lea    -(64*2-8*2)(sp),sp
  1144.  
  1145.     lea.l    @f(pc),a5
  1146.     bra    IDCT_SU7
  1147. @@    dc.w    IDCT_SU7-*-2
  1148.     dc.w    IDCT_SU8-*-2
  1149.     dc.w    IDCT_SU8-*-2
  1150.     dc.w    IDCT_SU8-*-2
  1151.     dc.w    IDCT_SU8-*-2
  1152.     dc.w    IDCT_SU8-*-2
  1153.     dc.w    IDCT_SU8-*-2
  1154.     dc.w    IDCT_normal-*-2
  1155.  
  1156. IDCT_63
  1157.     lea    -(64*2-8*2)(sp),sp
  1158.  
  1159.     lea.l    @f(pc),a5
  1160.     bra    IDCT_SU7
  1161. @@    dc.w    IDCT_SU8-*-2
  1162.     dc.w    IDCT_SU8-*-2
  1163.     dc.w    IDCT_SU8-*-2
  1164.     dc.w    IDCT_SU8-*-2
  1165.     dc.w    IDCT_SU8-*-2
  1166.     dc.w    IDCT_SU8-*-2
  1167.     dc.w    IDCT_SU8-*-2
  1168.     dc.w    IDCT_normal-*-2
  1169.  
  1170. IDCT_64
  1171.     lea    -(64*2-8*2)(sp),sp
  1172.  
  1173.     lea.l    @f(pc),a5
  1174.     bra    IDCT_SU8
  1175. @@    dc.w    IDCT_SU8-*-2
  1176.     dc.w    IDCT_SU8-*-2
  1177.     dc.w    IDCT_SU8-*-2
  1178.     dc.w    IDCT_SU8-*-2
  1179.     dc.w    IDCT_SU8-*-2
  1180.     dc.w    IDCT_SU8-*-2
  1181.     dc.w    IDCT_SU8-*-2
  1182.     dc.w    IDCT_normal-*-2
  1183.  
  1184. **********************************
  1185. *   xxxxxxxx
  1186. *   xxxxxxxx
  1187. *   xxxxxxxx
  1188. *   xxxxxxxx
  1189. *   xxxxxxxx
  1190. *   xxxxxxxx
  1191. *   xxxxxxxx
  1192. *   xxxxxxxx
  1193. **********************************
  1194. IDCT_normal
  1195. *
  1196. *  S(x,y)
  1197. *
  1198.   moveq   #8-1,d7
  1199. sy00
  1200.     move.w  d7,a5
  1201.     movem.w (sp)+,d4-d7/a1-a4
  1202.  
  1203.     adda.l a6,a1
  1204.     adda.l a6,a2
  1205.     adda.l a6,a3
  1206.     adda.l a6,a4
  1207. *
  1208.     movem.w (a6,d6.w),d0-d3
  1209.  
  1210.     sub.w   (a1)+,d2
  1211.     add.w   (a1)+,d0
  1212.     sub.w   (a1)+,d3
  1213.     sub.w   (a1),d1
  1214.  
  1215.     sub.w   (a2)+,d1
  1216.     add.w   (a2)+,d3
  1217.     add.w   (a2)+,d0
  1218.     add.w   (a2),d2
  1219.  
  1220.     sub.w   (a4)+,d3  * d3 = S1*cos7+S3*cos5+S5*cos3+S7*cos1
  1221.     add.w   (a4)+,d2  * d2 = S1*cos5-S3*cos1+S5*cos7+S7*cos3
  1222.     sub.w   (a4)+,d1  * d1 = S1*cos3-S3*cos7-S5*cos1-S7*cos5
  1223.     add.w   (a4),d0  * d0 = S1*cos1+S3*cos3+S5*cos5+S7*cos7
  1224. *
  1225.     movem.w -4(a6,d7.w),d6-d7    d6=COS6,d7=COS2
  1226.     sub.w   -(a3),d6        COS2  d6 =S2*cos6+S6*cos2
  1227.     add.w   -(a3),d7        COS6  d7 =S2*cos2+S6*cos6
  1228. *
  1229.     sub.w   d4,d5  * d5=s0-s4
  1230.     add.w   d4,d4
  1231.     add.w   d5,d4  * d4=s0+s4
  1232.  
  1233.     sub.w   d7,d4    * d4=d4-d7
  1234.     add.w   d7,d7
  1235.     add.w   d4,d7    * d7=d4+d7
  1236.  
  1237.     sub.w   d6,d5    * d5=d5-d6
  1238.     add.w   d6,d6
  1239.     add.w   d5,d6    * d6=d5+d6
  1240. *
  1241. *  S(0,y),S(7,y)
  1242. *
  1243.     sub.w   d0,d7    * S(7,y)
  1244.     add.w   d0,d0
  1245.     add.w   d7,d0    * S(0,y)
  1246. *
  1247. *  S(1,y),S(6,y)
  1248. *
  1249.     sub.w   d1,d6    * S(6,y)
  1250.     add.w   d1,d1
  1251.     add.w   d6,d1    * S(1,y)
  1252. *
  1253. *  S(2,y),S(5,y)
  1254. *
  1255.     sub.w   d2,d5    * S(5,y)
  1256.     add.w   d2,d2
  1257.     add.w   d5,d2    * S(2,y)
  1258. *
  1259. *  S(3,y),S(4,y)
  1260. *
  1261.     sub.w   d3,d4    * S(4,y)
  1262.     add.w   d3,d3
  1263.     add.w   d4,d3    * S(3,y)
  1264.     movem.w d0-d7,-(a0)        store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  1265. *
  1266.     move.w  a5,d7
  1267.     dbra    d7,sy00
  1268. *
  1269.   rts
  1270.  
  1271.  
  1272. **********************************
  1273. *   xxxxxxxx
  1274. *   xxxxxxx0
  1275. *   xxxxxxx0
  1276. *   xxxxxxx0
  1277. *   xxxxxxx0
  1278. *   xxxxxxx0
  1279. *   xxxxxxx0
  1280. *   xxxxxxx0
  1281. **********************************
  1282. IDCT_normal_SU1
  1283. *
  1284. *  S(x,y)
  1285. *
  1286.   move.w  7*2(sp),d0
  1287.   beq     IDCT_clr1
  1288.  
  1289.   movea.w  d0,a4
  1290.   adda.l   a6,a4
  1291.  
  1292.   moveq   #8-1,d7
  1293. sy00_SU1
  1294.     move.w  d7,a5
  1295.  
  1296.     movem.w (sp)+,d4-d7/a1-a3
  1297.     addq.l  #1*2,sp
  1298.  
  1299.     adda.l a6,a1
  1300.     adda.l a6,a2
  1301.     adda.l a6,a3
  1302. *
  1303.     movem.w (a6,d6.w),d0-d3
  1304.  
  1305.     sub.w   (a1)+,d2
  1306.     add.w   (a1)+,d0
  1307.     sub.w   (a1)+,d3
  1308.     sub.w   (a1),d1
  1309.  
  1310.     sub.w   (a2)+,d1
  1311.     add.w   (a2)+,d3
  1312.     add.w   (a2)+,d0
  1313.     add.w   (a2),d2
  1314.  
  1315.     sub.w   (a4)+,d3  * d3 = S1*cos7+S3*cos5+S5*cos3+S7*cos1
  1316.     add.w   (a4)+,d2  * d2 = S1*cos5-S3*cos1+S5*cos7+S7*cos3
  1317.     sub.w   (a4)+,d1  * d1 = S1*cos3-S3*cos7-S5*cos1-S7*cos5
  1318.     add.w   (a4),d0   * d0 = S1*cos1+S3*cos3+S5*cos5+S7*cos7
  1319.     subq.l  #3*2,a4
  1320. *
  1321.     movem.w -4(a6,d7.w),d6-d7    d6=COS6,d7=COS2
  1322.     sub.w   -(a3),d6        COS2  d6 =S2*cos6+S6*cos2
  1323.     add.w   -(a3),d7        COS6  d7 =S2*cos2+S6*cos6
  1324. *
  1325.     sub.w   d4,d5  * d5=s0-s4
  1326.     add.w   d4,d4
  1327.     add.w   d5,d4  * d4=s0+s4
  1328.  
  1329.     sub.w   d7,d4    * d4=d4-d7
  1330.     add.w   d7,d7
  1331.     add.w   d4,d7    * d7=d4+d7
  1332.  
  1333.     sub.w   d6,d5    * d5=d5-d6
  1334.     add.w   d6,d6
  1335.     add.w   d5,d6    * d6=d5+d6
  1336. *
  1337. *  S(0,y),S(7,y)
  1338. *
  1339.     sub.w   d0,d7    * S(7,y)
  1340.     add.w   d0,d0
  1341.     add.w   d7,d0    * S(0,y)
  1342. *
  1343. *  S(1,y),S(6,y)
  1344. *
  1345.     sub.w   d1,d6    * S(6,y)
  1346.     add.w   d1,d1
  1347.     add.w   d6,d1    * S(1,y)
  1348. *
  1349. *  S(2,y),S(5,y)
  1350. *
  1351.     sub.w   d2,d5    * S(5,y)
  1352.     add.w   d2,d2
  1353.     add.w   d5,d2    * S(2,y)
  1354. *
  1355. *  S(3,y),S(4,y)
  1356. *
  1357.     sub.w   d3,d4    * S(4,y)
  1358.     add.w   d3,d3
  1359.     add.w   d4,d3    * S(3,y)
  1360.     movem.w d0-d7,-(a0)        store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  1361. *
  1362.     move.w  a5,d7
  1363.     dbra    d7,sy00_SU1
  1364. *
  1365.   rts
  1366.  
  1367.  
  1368. **********************************
  1369. *   xxxxxxx0
  1370. *   xxxxxxx0
  1371. *   xxxxxxx0
  1372. *   xxxxxxx0
  1373. *   xxxxxxx0
  1374. *   xxxxxxx0
  1375. *   xxxxxxx0
  1376. *   xxxxxxx0
  1377. **********************************
  1378. IDCT_clr1
  1379. *
  1380. *  S(x,y)
  1381. *
  1382.   moveq   #8-1,d7
  1383. sy00_clr1
  1384.     move.w  d7,a5
  1385.  
  1386.     movem.w (sp)+,d4-d7/a1-a4
  1387.  
  1388.     adda.l  a6,a1
  1389.     adda.l  a6,a2
  1390.     adda.l  a6,a3
  1391. *
  1392.     movem.w (a6,d6.w),d0-d3
  1393.  
  1394.     sub.w   (a1)+,d2
  1395.     add.w   (a1)+,d0
  1396.     sub.w   (a1)+,d3
  1397.     sub.w   (a1),d1
  1398.  
  1399.     sub.w   (a2)+,d1
  1400.     add.w   (a2)+,d3
  1401.     add.w   (a2)+,d0
  1402.     add.w   (a2),d2
  1403.  
  1404.     movem.w -4(a6,d7.w),d6-d7    d6=COS6,d7=COS2
  1405.     sub.w   -(a3),d6        COS2  d6 =S2*cos6+S6*cos2
  1406.     add.w   -(a3),d7        COS6  d7 =S2*cos2+S6*cos6
  1407. *
  1408.     sub.w   d4,d5  * d5=s0-s4
  1409.     add.w   d4,d4
  1410.     add.w   d5,d4  * d4=s0+s4
  1411.  
  1412.     sub.w   d7,d4    * d4=d4-d7
  1413.     add.w   d7,d7
  1414.     add.w   d4,d7    * d7=d4+d7
  1415.  
  1416.     sub.w   d6,d5    * d5=d5-d6
  1417.     add.w   d6,d6
  1418.     add.w   d5,d6    * d6=d5+d6
  1419. *
  1420. *  S(0,y),S(7,y)
  1421. *
  1422.     sub.w   d0,d7    * S(7,y)
  1423.     add.w   d0,d0
  1424.     add.w   d7,d0    * S(0,y)
  1425. *
  1426. *  S(1,y),S(6,y)
  1427. *
  1428.     sub.w   d1,d6    * S(6,y)
  1429.     add.w   d1,d1
  1430.     add.w   d6,d1    * S(1,y)
  1431. *
  1432. *  S(2,y),S(5,y)
  1433. *
  1434.     sub.w   d2,d5    * S(5,y)
  1435.     add.w   d2,d2
  1436.     add.w   d5,d2    * S(2,y)
  1437. *
  1438. *  S(3,y),S(4,y)
  1439. *
  1440.     sub.w   d3,d4    * S(4,y)
  1441.     add.w   d3,d3
  1442.     add.w   d4,d3    * S(3,y)
  1443.     movem.w d0-d7,-(a0)        store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  1444. *
  1445.     move.w  a5,d7
  1446.     dbra    d7,sy00_clr1
  1447. *
  1448.   rts
  1449.  
  1450.  
  1451.  
  1452. **********************************
  1453. *   xxxxxx00
  1454. *   xxxxxx00
  1455. *   xxxxxx00
  1456. *   xxxxxx00
  1457. *   xxxxxx00
  1458. *   xxxxxx00
  1459. *   xxxxxx00
  1460. *   xxxxxx00
  1461. **********************************
  1462. IDCT_clr2
  1463. *
  1464. *  S(x,y)
  1465. *
  1466.   moveq   #8-1,d7
  1467. sy00_clr2
  1468.  
  1469.     movem.w (sp)+,d4-d6/a1-a3
  1470.     addq.l  #2*2,sp
  1471.  
  1472.     adda.l  a6,a2
  1473.     adda.l  a6,a3
  1474. *
  1475.     movem.w (a6,d6.w),d0-d3
  1476.  
  1477.     sub.w   (a2)+,d2
  1478.     add.w   (a2)+,d0
  1479.     sub.w   (a2)+,d3
  1480.     sub.w   (a2),d1
  1481.  
  1482.     sub.w   (a3)+,d1
  1483.     add.w   (a3)+,d3
  1484.     add.w   (a3)+,d0
  1485.     add.w   (a3),d2
  1486.  
  1487.     movem.w -4(a6,a1.w),d6/a1    d6=COS6,a1=COS2
  1488. *
  1489.     sub.w   d4,d5  * d5=s0-s4
  1490.     add.w   d4,d4
  1491.     add.w   d5,d4  * d4=s0+s4
  1492.  
  1493.     sub.w   a1,d4    * d4=d4-a1
  1494.     add.l   a1,a1
  1495.     add.l   d4,a1    * a1=d4+a1
  1496.  
  1497.     sub.w   d6,d5    * d5=d5-d6
  1498.     add.w   d6,d6
  1499.     add.w   d5,d6    * d6=d5+d6
  1500. *
  1501. *  S(0,y),S(7,y)
  1502. *
  1503.     sub.l   d0,a1    * S(7,y)
  1504.     add.w   d0,d0
  1505.     add.w   a1,d0    * S(0,y)
  1506. *
  1507. *  S(1,y),S(6,y)
  1508. *
  1509.     sub.w   d1,d6    * S(6,y)
  1510.     add.w   d1,d1
  1511.     add.w   d6,d1    * S(1,y)
  1512. *
  1513. *  S(2,y),S(5,y)
  1514. *
  1515.     sub.w   d2,d5    * S(5,y)
  1516.     add.w   d2,d2
  1517.     add.w   d5,d2    * S(2,y)
  1518. *
  1519. *  S(3,y),S(4,y)
  1520. *
  1521.     sub.w   d3,d4    * S(4,y)
  1522.     add.w   d3,d3
  1523.     add.w   d4,d3    * S(3,y)
  1524.     movem.w d0-d6/a1,-(a0)        store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  1525. *
  1526.     dbra    d7,sy00_clr2
  1527. *
  1528.   rts
  1529.  
  1530.  
  1531. **********************************
  1532. *   xxxxxx00
  1533. *   xxxxx000
  1534. *   xxxxx000
  1535. *   xxxxx000
  1536. *   xxxxx000
  1537. *   xxxxx000
  1538. *   xxxxx000
  1539. *   xxxxx000
  1540. **********************************
  1541. IDCT_clr2_SU1
  1542. *
  1543. *  S(x,y)
  1544. *
  1545.   move.w  5*2(sp),d0
  1546.   beq      IDCT_clr3
  1547.  
  1548.   movea.w d0,a3
  1549.   adda.l  a6,a3
  1550.   moveq   #8-1,d7
  1551. sy00_clr2_SU1
  1552.  
  1553.     movem.w (sp)+,d4-d6/a1-a2
  1554.     addq.l  #3*2,sp
  1555.  
  1556.     adda.l  a6,a2
  1557. *
  1558.     movem.w (a6,d6.w),d0-d3
  1559.  
  1560.     sub.w   (a2)+,d2
  1561.     add.w   (a2)+,d0
  1562.     sub.w   (a2)+,d3
  1563.     sub.w   (a2),d1
  1564.  
  1565.     sub.w   (a3)+,d1
  1566.     add.w   (a3)+,d3
  1567.     add.w   (a3)+,d0
  1568.     add.w   (a3),d2
  1569.     subq.l  #3*2,a3
  1570.  
  1571.     movem.w -4(a6,a1.w),d6/a1    d6=COS6,a1=COS2
  1572. *
  1573.     sub.w   d4,d5  * d5=s0-s4
  1574.     add.w   d4,d4
  1575.     add.w   d5,d4  * d4=s0+s4
  1576.  
  1577.     sub.w   a1,d4    * d4=d4-a1
  1578.     add.l   a1,a1
  1579.     add.l   d4,a1    * a1=d4+a1
  1580.  
  1581.     sub.w   d6,d5    * d5=d5-d6
  1582.     add.w   d6,d6
  1583.     add.w   d5,d6    * d6=d5+d6
  1584. *
  1585. *  S(0,y),S(7,y)
  1586. *
  1587.     sub.l   d0,a1    * S(7,y)
  1588.     add.w   d0,d0
  1589.     add.w   a1,d0    * S(0,y)
  1590. *
  1591. *  S(1,y),S(6,y)
  1592. *
  1593.     sub.w   d1,d6    * S(6,y)
  1594.     add.w   d1,d1
  1595.     add.w   d6,d1    * S(1,y)
  1596. *
  1597. *  S(2,y),S(5,y)
  1598. *
  1599.     sub.w   d2,d5    * S(5,y)
  1600.     add.w   d2,d2
  1601.     add.w   d5,d2    * S(2,y)
  1602. *
  1603. *  S(3,y),S(4,y)
  1604. *
  1605.     sub.w   d3,d4    * S(4,y)
  1606.     add.w   d3,d3
  1607.     add.w   d4,d3    * S(3,y)
  1608.     movem.w d0-d6/a1,-(a0)        store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  1609. *
  1610.     dbra    d7,sy00_clr2_SU1
  1611. *
  1612.   rts
  1613.  
  1614. **********************************
  1615. *   xxxxx000
  1616. *   xxxxx000
  1617. *   xxxxx000
  1618. *   xxxxx000
  1619. *   xxxxx000
  1620. *   xxxxx000
  1621. *   xxxxx000
  1622. *   xxxxx000
  1623. **********************************
  1624. IDCT_clr3
  1625. *
  1626. *  S(x,y)
  1627. *
  1628.   moveq   #8-1,d7
  1629. sy00_clr3
  1630.  
  1631.     movem.w (sp)+,d4-d6/a1-a2
  1632.     addq.l  #3*2,sp
  1633.  
  1634.     adda.l  a6,a2
  1635. *
  1636.     movem.w (a6,d6.w),d0-d3
  1637.  
  1638.     sub.w   (a2)+,d2
  1639.     add.w   (a2)+,d0
  1640.     sub.w   (a2)+,d3
  1641.     sub.w   (a2),d1
  1642.  
  1643.     movem.w -4(a6,a1.w),d6/a1    d6=COS6,a1=COS2
  1644. *
  1645.     sub.w   d4,d5  * d5=s0-s4
  1646.     add.w   d4,d4
  1647.     add.w   d5,d4  * d4=s0+s4
  1648.  
  1649.     sub.w   a1,d4    * d4=d4-a1
  1650.     add.l   a1,a1
  1651.     add.l   d4,a1    * a1=d4+a1
  1652.  
  1653.     sub.w   d6,d5    * d5=d5-d6
  1654.     add.w   d6,d6
  1655.     add.w   d5,d6    * d6=d5+d6
  1656. *
  1657. *  S(0,y),S(7,y)
  1658. *
  1659.     sub.l   d0,a1    * S(7,y)
  1660.     add.w   d0,d0
  1661.     add.w   a1,d0    * S(0,y)
  1662. *
  1663. *  S(1,y),S(6,y)
  1664. *
  1665.     sub.w   d1,d6    * S(6,y)
  1666.     add.w   d1,d1
  1667.     add.w   d6,d1    * S(1,y)
  1668. *
  1669. *  S(2,y),S(5,y)
  1670. *
  1671.     sub.w   d2,d5    * S(5,y)
  1672.     add.w   d2,d2
  1673.     add.w   d5,d2    * S(2,y)
  1674. *
  1675. *  S(3,y),S(4,y)
  1676. *
  1677.     sub.w   d3,d4    * S(4,y)
  1678.     add.w   d3,d3
  1679.     add.w   d4,d3    * S(3,y)
  1680.     movem.w d0-d6/a1,-(a0)        store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  1681. *
  1682.     dbra    d7,sy00_clr3
  1683. *
  1684.   rts
  1685.  
  1686.  
  1687.  
  1688. **********************************
  1689. *   xxxx0000
  1690. *   xxxx0000
  1691. *   xxxx0000
  1692. *   xxxx0000
  1693. *   xxxx0000
  1694. *   xxxx0000
  1695. *   xxxx0000
  1696. *   xxxx0000
  1697. **********************************
  1698. IDCT_clr4
  1699. *
  1700.   lea.l 1*16(a0),a0
  1701. *
  1702. *  S(x,y)
  1703. *
  1704.   moveq   #8-1,d7
  1705. sy00_clr4
  1706.  
  1707.     movem.w (sp)+,d5-d6/a1-a2
  1708.     addq.l  #4*2,sp
  1709.  
  1710.     adda.l  a6,a2
  1711. *
  1712.     movem.w (a6,d6.w),d0-d3
  1713.  
  1714.     sub.w   (a2)+,d2
  1715.     add.w   (a2)+,d0
  1716.     sub.w   (a2)+,d3
  1717.     sub.w   (a2),d1
  1718.  
  1719.     movem.w -4(a6,a1.w),d6/a1    d6=COS6,a1=COS2
  1720. *
  1721.     move.w  d5,d4
  1722.  
  1723.     sub.w   a1,d4    * d4=d4-a1
  1724.     add.l   a1,a1
  1725.     add.l   d4,a1    * a1=d4+a1
  1726.  
  1727.     sub.w   d6,d5    * d5=d5-d6
  1728.     add.w   d6,d6
  1729.     add.w   d5,d6    * d6=d5+d6
  1730. *
  1731. *  S(0,y),S(7,y)
  1732. *
  1733.     sub.l   d0,a1    * S(7,y)
  1734.     add.w   d0,d0
  1735.     add.w   a1,d0    * S(0,y)
  1736. *
  1737. *  S(1,y),S(6,y)
  1738. *
  1739.     sub.w   d1,d6    * S(6,y)
  1740.     add.w   d1,d1
  1741.     add.w   d6,d1    * S(1,y)
  1742. *
  1743. *  S(2,y),S(5,y)
  1744. *
  1745.     sub.w   d2,d5    * S(5,y)
  1746.     add.w   d2,d2
  1747.     add.w   d5,d2    * S(2,y)
  1748. *
  1749. *  S(3,y),S(4,y)
  1750. *
  1751.     sub.w   d3,d4    * S(4,y)
  1752.     add.w   d3,d3
  1753.     add.w   d4,d3    * S(3,y)
  1754.     movem.w d0-d6/a1,-(a0)        store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  1755. *
  1756.     dbra    d7,sy00_clr4
  1757. *
  1758.   rts
  1759.  
  1760.  
  1761. **********************************
  1762. *   xxxx0000
  1763. *   xxx00000
  1764. *   xxx00000
  1765. *   xxx00000
  1766. *   xxx00000
  1767. *   xxx00000
  1768. *   xxx00000
  1769. *   xxx00000
  1770. **********************************
  1771. IDCT_clr4_SU1
  1772. *
  1773. *  S(x,y)
  1774. *
  1775.   move.w  3*2(sp),d0
  1776.   beq     IDCT_clr5
  1777.  
  1778.   lea.l 1*16(a0),a0
  1779.  
  1780.   movea.w d0,a2
  1781.   adda.l  a6,a2
  1782.   moveq   #8-1,d7
  1783. sy00_clr4_SU1
  1784.  
  1785.     movem.w (sp)+,d5-d6/a1
  1786.     lea.l   5*2(sp),sp
  1787. *
  1788.     movem.w  (a6,d6.w),d0-d3
  1789.  
  1790.     sub.w   (a2)+,d2
  1791.     add.w   (a2)+,d0
  1792.     sub.w   (a2)+,d3
  1793.     sub.w   (a2),d1
  1794.     subq.l  #3*2,a2
  1795.  
  1796.     movem.w -4(a6,a1.w),d6/a1    d6=COS6,a1=COS2
  1797. *
  1798.     move.w  d5,d4
  1799.  
  1800.     sub.w   a1,d4    * d4=d4-a1
  1801.     add.l   a1,a1
  1802.     add.l   d4,a1    * a1=d4+a1
  1803.  
  1804.     sub.w   d6,d5    * d5=d5-d6
  1805.     add.w   d6,d6
  1806.     add.w   d5,d6    * d6=d5+d6
  1807. *
  1808. *  S(0,y),S(7,y)
  1809. *
  1810.     sub.l   d0,a1    * S(7,y)
  1811.     add.w   d0,d0
  1812.     add.w   a1,d0    * S(0,y)
  1813. *
  1814. *  S(1,y),S(6,y)
  1815. *
  1816.     sub.w   d1,d6    * S(6,y)
  1817.     add.w   d1,d1
  1818.     add.w   d6,d1    * S(1,y)
  1819. *
  1820. *  S(2,y),S(5,y)
  1821. *
  1822.     sub.w   d2,d5    * S(5,y)
  1823.     add.w   d2,d2
  1824.     add.w   d5,d2    * S(2,y)
  1825. *
  1826. *  S(3,y),S(4,y)
  1827. *
  1828.     sub.w   d3,d4    * S(4,y)
  1829.     add.w   d3,d3
  1830.     add.w   d4,d3    * S(3,y)
  1831.     movem.w d0-d6/a1,-(a0)        store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  1832. *
  1833.     dbra    d7,sy00_clr4_SU1
  1834. *
  1835.   rts
  1836.  
  1837.  
  1838.  
  1839. **********************************
  1840. *   xxx00000
  1841. *   xxx00000
  1842. *   xxx00000
  1843. *   xxx00000
  1844. *   xxx00000
  1845. *   xxx00000
  1846. *   xxx00000
  1847. *   xxx00000
  1848. **********************************
  1849. IDCT_clr5
  1850. *
  1851.   lea.l 1*16(a0),a0
  1852. *
  1853. *  S(x,y)
  1854. *
  1855.   moveq   #8-1,d7
  1856. sy00_clr5
  1857.  
  1858.     movem.w (sp)+,d5-d6/a1
  1859.     lea.l   5*2(sp),sp
  1860.  
  1861. *
  1862.     movem.w (a6,d6.w),d0-d3
  1863.     movem.w -4(a6,a1.w),d6/a1    d6=COS6,a1=COS2
  1864. *
  1865.     move.w  d5,d4
  1866.  
  1867.     sub.w   a1,d4    * d4=d4-a1
  1868.     add.l   a1,a1
  1869.     add.l   d4,a1    * a1=d4+a1
  1870.  
  1871.     sub.w   d6,d5    * d5=d5-d6
  1872.     add.w   d6,d6
  1873.     add.w   d5,d6    * d6=d5+d6
  1874. *
  1875. *  S(0,y),S(7,y)
  1876. *
  1877.     sub.l   d0,a1    * S(7,y)
  1878.     add.w   d0,d0
  1879.     add.w   a1,d0    * S(0,y)
  1880. *
  1881. *  S(1,y),S(6,y)
  1882. *
  1883.     sub.w   d1,d6    * S(6,y)
  1884.     add.w   d1,d1
  1885.     add.w   d6,d1    * S(1,y)
  1886. *
  1887. *  S(2,y),S(5,y)
  1888. *
  1889.     sub.w   d2,d5    * S(5,y)
  1890.     add.w   d2,d2
  1891.     add.w   d5,d2    * S(2,y)
  1892. *
  1893. *  S(3,y),S(4,y)
  1894. *
  1895.     sub.w   d3,d4    * S(4,y)
  1896.     add.w   d3,d3
  1897.     add.w   d4,d3    * S(3,y)
  1898.     movem.w d0-d6/a1,-(a0)    store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  1899. *
  1900.     dbra    d7,sy00_clr5
  1901. *
  1902.   rts
  1903. **********************************
  1904. *   xxx00000
  1905. *   xx000000
  1906. *   xx000000
  1907. *   xx000000
  1908. *   xx000000
  1909. *   xx000000
  1910. *   xx000000
  1911. *   xx000000
  1912. **********************************
  1913. IDCT_clr5_SU1
  1914. *
  1915.   lea.l 1*16(a0),a0
  1916. *
  1917. *  S(x,y)
  1918. *
  1919.     move.w  4(sp),a2
  1920.     movem.w -4(a6,a2.w),a3/a4    a3=COS6,a4=COS2
  1921.  
  1922.   moveq   #8-1,d7
  1923. sy00_clr5_SU1
  1924.  
  1925.     move.l  (sp)+,d5
  1926.     lea.l   6*2(sp),sp
  1927. *
  1928.     movem.w (a6,d5.w),d0-d3
  1929.     swap.w  d5
  1930.  
  1931.     move.w  a4,a1        COS2
  1932.     move.w  a3,d6        COS6
  1933. *
  1934.     move.w  d5,d4
  1935.  
  1936.     sub.w   a1,d4    * d4=d4-a1
  1937.     add.l   a1,a1
  1938.     add.l   d4,a1    * a1=d4+a1
  1939.  
  1940.     sub.w   d6,d5    * d5=d5-d6
  1941.     add.w   d6,d6
  1942.     add.w   d5,d6    * d6=d5+d6
  1943. *
  1944. *  S(0,y),S(7,y)
  1945. *
  1946.     sub.l   d0,a1    * S(7,y)
  1947.     add.w   d0,d0
  1948.     add.w   a1,d0    * S(0,y)
  1949. *
  1950. *  S(1,y),S(6,y)
  1951. *
  1952.     sub.w   d1,d6    * S(6,y)
  1953.     add.w   d1,d1
  1954.     add.w   d6,d1    * S(1,y)
  1955. *
  1956. *  S(2,y),S(5,y)
  1957. *
  1958.     sub.w   d2,d5    * S(5,y)
  1959.     add.w   d2,d2
  1960.     add.w   d5,d2    * S(2,y)
  1961. *
  1962. *  S(3,y),S(4,y)
  1963. *
  1964.     sub.w   d3,d4    * S(4,y)
  1965.     add.w   d3,d3
  1966.     add.w   d4,d3    * S(3,y)
  1967.     movem.w d0-d6/a1,-(a0)    store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  1968. *
  1969.     dbra    d7,sy00_clr5_SU1
  1970. *
  1971.   rts
  1972.  
  1973.  
  1974.  
  1975. **********************************
  1976. *   xx000000
  1977. *   xx000000
  1978. *   xx000000
  1979. *   xx000000
  1980. *   xx000000
  1981. *   xx000000
  1982. *   xx000000
  1983. *   xx000000
  1984. **********************************
  1985. IDCT_clr6
  1986. *
  1987.   lea.l 1*16(a0),a0
  1988. *
  1989. *  S(x,y)
  1990. *
  1991.   moveq   #8-1,d7
  1992. sy00_clr6
  1993.  
  1994.     move.l  (sp)+,d5
  1995.     lea.l   6*2(sp),sp
  1996. *
  1997.     movem.w (a6,d5.w),d0-d3
  1998.     swap.w  d5
  1999. *
  2000.     move.w  d5,d4
  2001.     move.w  d4,a4
  2002.     move.w  d5,d6
  2003. *
  2004. *  S(0,y),S(7,y)
  2005. *
  2006.     sub.l   d0,a4    * S(7,y)
  2007.     add.w   d0,d0
  2008.     add.w   a4,d0    * S(0,y)
  2009. *
  2010. *  S(1,y),S(6,y)
  2011. *
  2012.     sub.w   d1,d6    * S(6,y)
  2013.     add.w   d1,d1
  2014.     add.w   d6,d1    * S(1,y)
  2015. *
  2016. *  S(2,y),S(5,y)
  2017. *
  2018.     sub.w   d2,d5    * S(5,y)
  2019.     add.w   d2,d2
  2020.     add.w   d5,d2    * S(2,y)
  2021. *
  2022. *  S(3,y),S(4,y)
  2023. *
  2024.     sub.w   d3,d4    * S(4,y)
  2025.     add.w   d3,d3
  2026.     add.w   d4,d3    * S(3,y)
  2027.     movem.w d0-d6/a4,-(a0)    store S(0,y),S(1,y),S(2,y),S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  2028. *
  2029.     dbra    d7,sy00_clr6
  2030. *
  2031.   rts
  2032.  
  2033.  
  2034. **********************************
  2035. *   xx000000
  2036. *   x0000000
  2037. *   x0000000
  2038. *   x0000000
  2039. *   x0000000
  2040. *   x0000000
  2041. *   x0000000
  2042. *   x0000000
  2043. **********************************
  2044. IDCT_clr6_SU1
  2045. *
  2046.     lea.l 1*16(a0),a0
  2047. *
  2048. *  S(x,y)
  2049. *
  2050.   movea.w 2(sp),a4
  2051.   movem.w  (a6,a4.w),a1-a4
  2052.  
  2053.   moveq   #8-1,d7
  2054. sy00_clr6_SU1
  2055.  
  2056.     move.w  (sp)+,d0
  2057.     lea.l   7*2(sp),sp
  2058.  
  2059.     move.w  d0,d1
  2060.     move.w  d0,d2
  2061.     move.w  d0,d3
  2062.     move.w  d0,d4
  2063.     move.w  d0,d5
  2064.     move.w  d0,d6
  2065.     move.w  d0,a5
  2066. *
  2067.     sub.l   a1,a5       * S(7,y)
  2068.     add.w   a1,d0       * S(0,y)
  2069. *
  2070.     sub.w   a2,d6       * S(6,y)
  2071.     add.w   a2,d1       * S(1,y)
  2072. *
  2073.     sub.w   a3,d5       * S(5,y)
  2074.     add.w   a3,d2       * S(2,y)
  2075. *
  2076.     sub.w   a4,d4       * S(4,y)
  2077.     add.w   a4,d3       * S(3,y)
  2078.  
  2079.     movem.w d0-d6/a5,-(a0)    store S(0,y),S(1,y),S(2,y) S(3,y),S(4,y),S(5,y),S(6,y),S(7,y)
  2080. *
  2081.     dbra    d7,sy00_clr6_SU1
  2082. *
  2083.   rts
  2084.  
  2085. **********************************
  2086. *   x0000000
  2087. **********************************
  2088. IDCT_SU1
  2089.  
  2090.     move.w    1*2(a0),d5
  2091.     lea.l    2*8(a0),a0
  2092.  
  2093. _IDCT_SU1
  2094.  
  2095.     move.w    d5,-(sp)
  2096.     move.w    d5,1*16(sp)
  2097.     move.w    d5,2*16(sp)
  2098.     move.w    d5,3*16(sp)
  2099.     move.w    d5,4*16(sp)
  2100.     move.w    d5,5*16(sp)
  2101.     move.w    d5,6*16(sp)
  2102.     move.w    d5,7*16(sp)
  2103.  
  2104.     move.w    (a5)+,d5
  2105.     jmp    (a5,d5.w)
  2106.  
  2107. **********************************
  2108. *   xx000000
  2109. **********************************
  2110. IDCT_SU2
  2111.  
  2112.     movem.w 1*2(a0),d5-d6
  2113.     lea.l   2*8(a0),a0
  2114.  
  2115. _IDCT_SU2
  2116.  
  2117.     move.w  d6,d0
  2118.     beq     _IDCT_SU1
  2119.  
  2120.     movem.w (a6,d6.w),d0-d3
  2121.  
  2122.     move.w  d5,d4
  2123.     beq     IDCT_SU2_01
  2124.  
  2125.     move.w  d5,d7
  2126. *
  2127. *  S'(u,0),S'(u,7)
  2128. *
  2129.     sub.w   d0,d7
  2130.     add.w   d0,d0
  2131.     add.w   d7,d0
  2132. *
  2133. *  S'(u,3),S'(u,4)
  2134. *
  2135.     sub.w   d3,d4
  2136.     add.w   d3,d3
  2137.     add.w   d4,d3
  2138.  
  2139.     move.w  d7,-(sp)        * S'(u,7) = d2+d3-d4
  2140.     move.w  d4,3*16(sp)   * S'(u,4) = d2-d3-d4
  2141.     move.w  d3,4*16(sp)   * S'(u,3) = d2-d3+d4 = d2-d3-d4 + 2*d4 = S'(u,4) + 2*d4
  2142.     move.w  d0,7*16(sp)   * S'(u,0) = d2+d3+d4 = d2+d3-d4 +2*d4 = S'(u,7) + 2*d4
  2143. *
  2144.     move.w  d5,d7
  2145. *
  2146. *  S'(u,1),S'(u,6)
  2147. *
  2148.     sub.w   d1,d7
  2149.     add.w   d1,d1
  2150.     add.w   d7,d1
  2151. *
  2152. *  S'(u,2),S'(u,5)
  2153. *
  2154.     sub.w   d2,d5
  2155.     add.w   d2,d2
  2156.     add.w   d5,d2
  2157.  
  2158.     move.w  d1,6*16(sp)   * S'(u,1) = d1+d3+d4 = d1+d3-d4 + 2*d4 = S'(u,6) + 2*d4
  2159.     move.w  d2,5*16(sp)   * S'(u,2) = d1-d3+d4 = d1-d3-d4 + 2*d4 = S'(u,5) + 2*d4
  2160.     move.w  d5,2*16(sp)   * S'(u,5) = d1-d3-d4
  2161.     move.w  d7,1*16(sp)   * S'(u,6) = d1+d3-d4
  2162.  
  2163.     move.w    (a5)+,d5
  2164.     jmp    (a5,d5.w)
  2165.  
  2166. **********************************
  2167. *   0x000000
  2168. **********************************
  2169. IDCT_SU2_01
  2170.     move.w    d0,7*16-2(sp)    * S'(u,0)
  2171.     neg.w    d0
  2172.     move.w    d0,-(sp)    * S'(u,7)
  2173.     move.w    d3,4*16(sp)    * S'(u,3)
  2174.     neg.w    d3
  2175.     move.w    d3,3*16(sp)    * S'(u,4)
  2176.  
  2177.     move.w    d1,6*16(sp)    * S'(u,1) = d1+d3+d4 = d1+d3-d4 + 2*d4 = S'(u,6) + 2*d4
  2178.     move.w    d2,5*16(sp)    * S'(u,2) = d1-d3+d4 = d1-d3-d4 + 2*d4 = S'(u,5) + 2*d4
  2179.     neg.w    d1
  2180.     neg.w    d2
  2181.     move.w    d2,2*16(sp)    * S'(u,5) = d1-d3-d4
  2182.     move.w  d1,1*16(sp)    * S'(u,6) = d1+d3-d4
  2183.  
  2184.     move.w    (a5)+,d5
  2185.     jmp    (a5,d5.w)
  2186.  
  2187. **********************************
  2188. *   xxx00000
  2189. **********************************
  2190. .xdef    IDCT_SU3_16
  2191. IDCT_SU3_16
  2192.     lea.l    1*16(a0),a0
  2193. IDCT_SU3
  2194.  
  2195.     movem.w     (a0)+,d4-d7
  2196.     addq.w      #4*2,a0
  2197.  
  2198. _IDCT_SU3
  2199.  
  2200.     move.w  d7,d0
  2201.     beq     _IDCT_SU2
  2202.  
  2203. *
  2204.     movem.w (a6,d6.w),d0-d3
  2205.  
  2206.     move.w  d5,d4
  2207. *
  2208.     move.l  -4(a6,d7.w),d7
  2209.     sub.w   d7,d4    * d4=d4-d7
  2210.     add.w   d7,d7
  2211.     add.w   d4,d7    * d7=d4+d7
  2212. *
  2213. *  S'(u,0),S'(u,7)
  2214. *
  2215.     sub.w   d0,d7
  2216.     add.w   d0,d0
  2217.     add.w   d7,d0
  2218. *
  2219. *  S'(u,3),S'(u,4)
  2220. *
  2221.     sub.w   d3,d4
  2222.     add.w   d3,d3
  2223.     add.w   d4,d3
  2224.  
  2225.     move.w  d7,-(sp)        * S'(u,7) = d2+d3-d4
  2226.     move.w  d4,3*16(sp)   * S'(u,4) = d2-d3-d4
  2227.     move.w  d3,4*16(sp)   * S'(u,3) = d2-d3+d4 = d2-d3-d4 + 2*d4 = S'(u,4) + 2*d4
  2228.     move.w  d0,7*16(sp)   * S'(u,0) = d2+d3+d4 = d2+d3-d4 +2*d4 = S'(u,7) + 2*d4
  2229. *
  2230.     swap.w  d7
  2231.     sub.w   d7,d5    * d5=d5-d6
  2232.     add.w   d7,d7
  2233.     add.w   d5,d7    * d6=d5+d6
  2234. *
  2235. *  S'(u,1),S'(u,6)
  2236. *
  2237.     sub.w   d1,d7
  2238.     add.w   d1,d1
  2239.     add.w   d7,d1
  2240. *
  2241. *  S'(u,2),S'(u,5)
  2242. *
  2243.     sub.w   d2,d5
  2244.     add.w   d2,d2
  2245.     add.w   d5,d2
  2246.  
  2247.     move.w  d1,6*16(sp)   * S'(u,1) = d1+d3+d4 = d1+d3-d4 + 2*d4 = S'(u,6) + 2*d4
  2248.     move.w  d2,5*16(sp)   * S'(u,2) = d1-d3+d4 = d1-d3-d4 + 2*d4 = S'(u,5) + 2*d4
  2249.     move.w  d5,2*16(sp)   * S'(u,5) = d1-d3-d4
  2250.     move.w  d7,1*16(sp)   * S'(u,6) = d1+d3-d4
  2251.  
  2252.     move.w    (a5)+,d5
  2253.     jmp    (a5,d5.w)
  2254.  
  2255.  
  2256. **********************************
  2257. *   xxxx0000
  2258. **********************************
  2259. .xdef    IDCT_SU4_16
  2260. IDCT_SU4_16
  2261.     lea.l    1*16(a0),a0
  2262. IDCT_SU4
  2263.  
  2264.     movem.w     (a0)+,d4-d7/a1
  2265.     addq.l      #3*2,a0
  2266.  
  2267. _IDCT_SU4
  2268.  
  2269.     move.w  a1,d0
  2270.     beq     _IDCT_SU3
  2271.  
  2272.     adda.l a6,a1
  2273. *
  2274.     movem.w (a6,d6.w),d0-d3
  2275.  
  2276.     sub.w   (a1)+,d2
  2277.     add.w   (a1)+,d0
  2278.     sub.w   (a1)+,d3
  2279.     sub.w   (a1),d1
  2280.  
  2281.     move.w  d5,d4
  2282. *
  2283.     move.l  -4(a6,d7.w),d7
  2284.     sub.w   d7,d4    * d4=d4-d7
  2285.     add.w   d7,d7
  2286.     add.w   d4,d7    * d7=d4+d7
  2287. *
  2288. *  S'(u,0),S'(u,7)
  2289. *
  2290.     sub.w   d0,d7
  2291.     add.w   d0,d0
  2292.     add.w   d7,d0
  2293. *
  2294. *  S'(u,3),S'(u,4)
  2295. *
  2296.     sub.w   d3,d4
  2297.     add.w   d3,d3
  2298.     add.w   d4,d3
  2299.  
  2300.     move.w  d7,-(sp)        * S'(u,7) = d2+d3-d4
  2301.     move.w  d4,3*16(sp)   * S'(u,4) = d2-d3-d4
  2302.     move.w  d3,4*16(sp)   * S'(u,3) = d2-d3+d4 = d2-d3-d4 + 2*d4 = S'(u,4) + 2*d4
  2303.     move.w  d0,7*16(sp)   * S'(u,0) = d2+d3+d4 = d2+d3-d4 +2*d4 = S'(u,7) + 2*d4
  2304. *
  2305.     swap.w  d7
  2306.     sub.w   d7,d5    * d5=d5-d6
  2307.     add.w   d7,d7
  2308.     add.w   d5,d7    * d6=d5+d6
  2309. *
  2310. *  S'(u,1),S'(u,6)
  2311. *
  2312.     sub.w   d1,d7
  2313.     add.w   d1,d1
  2314.     add.w   d7,d1
  2315. *
  2316. *  S'(u,2),S'(u,5)
  2317. *
  2318.     sub.w   d2,d5
  2319.     add.w   d2,d2
  2320.     add.w   d5,d2
  2321.  
  2322.     move.w  d1,6*16(sp)   * S'(u,1) = d1+d3+d4 = d1+d3-d4 + 2*d4 = S'(u,6) + 2*d4
  2323.     move.w  d2,5*16(sp)   * S'(u,2) = d1-d3+d4 = d1-d3-d4 + 2*d4 = S'(u,5) + 2*d4
  2324.     move.w  d5,2*16(sp)   * S'(u,5) = d1-d3-d4
  2325.     move.w  d7,1*16(sp)   * S'(u,6) = d1+d3-d4
  2326.  
  2327.     move.w    (a5)+,d5
  2328.     jmp    (a5,d5.w)
  2329.  
  2330.  
  2331. **********************************
  2332. *   xxxxx000
  2333. **********************************
  2334. .xdef    IDCT_SU5_16
  2335. IDCT_SU5_16
  2336.     lea.l    1*16(a0),a0
  2337. IDCT_SU5
  2338.  
  2339.     movem.w     (a0)+,d4-d7/a1
  2340.     addq.l      #3*2,a0
  2341.  
  2342. _IDCT_SU5
  2343.  
  2344.     move.w  d4,d0
  2345.     beq     _IDCT_SU4
  2346.  
  2347.     adda.l a6,a1
  2348. *
  2349.     movem.w (a6,d6.w),d0-d3
  2350.  
  2351.     sub.w   (a1)+,d2
  2352.     add.w   (a1)+,d0
  2353.     sub.w   (a1)+,d3
  2354.     sub.w   (a1),d1
  2355.  
  2356.     sub.w   d4,d5  * d1=s0-s4
  2357.     add.w   d4,d4
  2358.     add.w   d5,d4  * d3=s0+s4 = s0-s4 + 2*s4
  2359. *
  2360.     move.l  -4(a6,d7.w),d7
  2361.     sub.w   d7,d4    * d4=d4-d7
  2362.     add.w   d7,d7
  2363.     add.w   d4,d7    * d7=d4+d7
  2364. *
  2365. *  S'(u,0),S'(u,7)
  2366. *
  2367.     sub.w   d0,d7
  2368.     add.w   d0,d0
  2369.     add.w   d7,d0
  2370. *
  2371. *  S'(u,3),S'(u,4)
  2372. *
  2373.     sub.w   d3,d4
  2374.     add.w   d3,d3
  2375.     add.w   d4,d3
  2376.  
  2377.     move.w  d7,-(sp)        * S'(u,7) = d2+d3-d4
  2378.     move.w  d4,3*16(sp)   * S'(u,4) = d2-d3-d4
  2379.     move.w  d3,4*16(sp)   * S'(u,3) = d2-d3+d4 = d2-d3-d4 + 2*d4 = S'(u,4) + 2*d4
  2380.     move.w  d0,7*16(sp)   * S'(u,0) = d2+d3+d4 = d2+d3-d4 +2*d4 = S'(u,7) + 2*d4
  2381. *
  2382.     swap.w  d7
  2383.     sub.w   d7,d5    * d5=d5-d6
  2384.     add.w   d7,d7
  2385.     add.w   d5,d7    * d6=d5+d6
  2386. *
  2387. *  S'(u,1),S'(u,6)
  2388. *
  2389.     sub.w   d1,d7
  2390.     add.w   d1,d1
  2391.     add.w   d7,d1
  2392. *
  2393. *  S'(u,2),S'(u,5)
  2394. *
  2395.     sub.w   d2,d5
  2396.     add.w   d2,d2
  2397.     add.w   d5,d2
  2398.  
  2399.     move.w  d1,6*16(sp)   * S'(u,1) = d1+d3+d4 = d1+d3-d4 + 2*d4 = S'(u,6) + 2*d4
  2400.     move.w  d2,5*16(sp)   * S'(u,2) = d1-d3+d4 = d1-d3-d4 + 2*d4 = S'(u,5) + 2*d4
  2401.     move.w  d5,2*16(sp)   * S'(u,5) = d1-d3-d4
  2402.     move.w  d7,1*16(sp)   * S'(u,6) = d1+d3-d4
  2403.  
  2404.     move.w    (a5)+,d5
  2405.     jmp    (a5,d5.w)
  2406.  
  2407.  
  2408.  
  2409. **********************************
  2410. *   xxxxxx00
  2411. **********************************
  2412. IDCT_SU6
  2413.  
  2414.     movem.w     (a0)+,d4-d7/a1-a2
  2415.     addq.l      #2*2,a0
  2416.  
  2417. _IDCT_SU6
  2418.  
  2419.     move.w  a2,d0
  2420.     beq     _IDCT_SU5
  2421.  
  2422.     adda.l a6,a1
  2423.     adda.l a6,a2
  2424. *
  2425.     movem.w  (a6,d6.w),d0-d3
  2426.  
  2427.     sub.w   (a1)+,d2
  2428.     add.w   (a1)+,d0
  2429.     sub.w   (a1)+,d3
  2430.     sub.w   (a1),d1
  2431.  
  2432.     sub.w   (a2)+,d1
  2433.     add.w   (a2)+,d3
  2434.     add.w   (a2)+,d0
  2435.     add.w   (a2),d2
  2436.  
  2437.     sub.w   d4,d5  * d1=s0-s4
  2438.     add.w   d4,d4
  2439.     add.w   d5,d4  * d3=s0+s4 = s0-s4 + 2*s4
  2440. *
  2441.     move.l  -4(a6,d7.w),d7
  2442.     sub.w   d7,d4    * d4=d4-d7
  2443.     add.w   d7,d7
  2444.     add.w   d4,d7    * d7=d4+d7
  2445. *
  2446. *  S'(u,0),S'(u,7)
  2447. *
  2448.     sub.w   d0,d7
  2449.     add.w   d0,d0
  2450.     add.w   d7,d0
  2451. *
  2452. *  S'(u,3),S'(u,4)
  2453. *
  2454.     sub.w   d3,d4
  2455.     add.w   d3,d3
  2456.     add.w   d4,d3
  2457.  
  2458.     move.w  d7,-(sp)        * S'(u,7) = d2+d3-d4
  2459.     move.w  d4,3*16(sp)   * S'(u,4) = d2-d3-d4
  2460.     move.w  d3,4*16(sp)   * S'(u,3) = d2-d3+d4 = d2-d3-d4 + 2*d4 = S'(u,4) + 2*d4
  2461.     move.w  d0,7*16(sp)   * S'(u,0) = d2+d3+d4 = d2+d3-d4 +2*d4 = S'(u,7) + 2*d4
  2462. *
  2463.     swap.w  d7
  2464.     sub.w   d7,d5    * d5=d5-d6
  2465.     add.w   d7,d7
  2466.     add.w   d5,d7    * d6=d5+d6
  2467. *
  2468. *  S'(u,1),S'(u,6)
  2469. *
  2470.     sub.w   d1,d7
  2471.     add.w   d1,d1
  2472.     add.w   d7,d1
  2473. *
  2474. *  S'(u,2),S'(u,5)
  2475. *
  2476.     sub.w   d2,d5
  2477.     add.w   d2,d2
  2478.     add.w   d5,d2
  2479.  
  2480.     move.w  d1,6*16(sp)   * S'(u,1) = d1+d3+d4 = d1+d3-d4 + 2*d4 = S'(u,6) + 2*d4
  2481.     move.w  d2,5*16(sp)   * S'(u,2) = d1-d3+d4 = d1-d3-d4 + 2*d4 = S'(u,5) + 2*d4
  2482.     move.w  d5,2*16(sp)   * S'(u,5) = d1-d3-d4
  2483.     move.w  d7,1*16(sp)   * S'(u,6) = d1+d3-d4
  2484.  
  2485.     move.w    (a5)+,d5
  2486.     jmp    (a5,d5.w)
  2487.  
  2488.  
  2489.  
  2490. **********************************
  2491. *   xxxxxxx0
  2492. **********************************
  2493. IDCT_SU7
  2494.  
  2495.     movem.w     (a0)+,d4-d7/a1-a4
  2496.  
  2497. _IDCT_SU7
  2498.  
  2499.     move.w  a3,d0
  2500.     beq     _IDCT_SU6
  2501.  
  2502. IDCT_SU7_2
  2503.  
  2504.     adda.l a6,a1
  2505.     adda.l a6,a2
  2506.     adda.l a6,a3
  2507. *
  2508.     movem.w (a6,d6.w),d0-d3
  2509.  
  2510.     sub.w   (a1)+,d2
  2511.     add.w   (a1)+,d0
  2512.     sub.w   (a1)+,d3
  2513.     sub.w   (a1),d1
  2514.  
  2515.     sub.w   (a2)+,d1
  2516.     add.w   (a2)+,d3
  2517.     add.w   (a2)+,d0
  2518.     add.w   (a2),d2
  2519.  
  2520.     sub.w   d4,d5  * d1=s0-s4
  2521.     add.w   d4,d4
  2522.     add.w   d5,d4  * d3=s0+s4 = s0-s4 + 2*s4
  2523. *
  2524.     move.l  -4(a6,d7.w),d7
  2525.     add.w   -4(a3),d7  * d7 =S2*cos2+S6*cos6
  2526.  
  2527.     sub.w   d7,d4    * d4=d4-d7
  2528.     add.w   d7,d7
  2529.     add.w   d4,d7    * d7=d4+d7
  2530. *
  2531. *  S'(u,0),S'(u,7)
  2532. *
  2533.     sub.w   d0,d7
  2534.     add.w   d0,d0
  2535.     add.w   d7,d0
  2536. *
  2537. *  S'(u,3),S'(u,4)
  2538. *
  2539.     sub.w   d3,d4
  2540.     add.w   d3,d3
  2541.     add.w   d4,d3
  2542.  
  2543.     move.w  d7,-(sp)        * S'(u,7) = d2+d3-d4
  2544.     move.w  d4,3*16(sp)     * S'(u,4) = d2-d3-d4
  2545.     move.w  d3,4*16(sp)     * S'(u,3) = d2-d3+d4 = d2-d3-d4 + 2*d4 = S'(u,4) + 2*d4
  2546.     move.w  d0,7*16(sp)     * S'(u,0) = d2+d3+d4 = d2+d3-d4 +2*d4 = S'(u,7) + 2*d4
  2547. *
  2548.     swap.w  d7
  2549.     sub.w   -(a3),d7  * d7 =S2*cos6+S6*cos2
  2550.  
  2551.     sub.w   d7,d5    * d5=d5-d6
  2552.     add.w   d7,d7
  2553.     add.w   d5,d7    * d6=d5+d6
  2554. *
  2555. *  S'(u,1),S'(u,6)
  2556. *
  2557.     sub.w   d1,d7
  2558.     add.w   d1,d1
  2559.     add.w   d7,d1
  2560. *
  2561. *  S'(u,2),S'(u,5)
  2562. *
  2563.     sub.w   d2,d5
  2564.     add.w   d2,d2
  2565.     add.w   d5,d2
  2566.  
  2567.     move.w  d1,6*16(sp)   * S'(u,1) = d1+d3+d4 = d1+d3-d4 + 2*d4 = S'(u,6) + 2*d4
  2568.     move.w  d2,5*16(sp)   * S'(u,2) = d1-d3+d4 = d1-d3-d4 + 2*d4 = S'(u,5) + 2*d4
  2569.     move.w  d5,2*16(sp)   * S'(u,5) = d1-d3-d4
  2570.     move.w  d7,1*16(sp)   * S'(u,6) = d1+d3-d4
  2571.  
  2572.     move.w    (a5)+,d5
  2573.     jmp    (a5,d5.w)
  2574.  
  2575.  
  2576. **********************************
  2577. *   xxxxxxxx
  2578. **********************************
  2579. IDCT_SU8
  2580.  
  2581.     movem.w     (a0)+,d4-d7/a1-a4    *S0,S1,S2,S3,S4,S5,S6,S7
  2582.     move.w  a4,d0
  2583.     beq     _IDCT_SU7
  2584.  
  2585.     adda.l a6,a1
  2586.     adda.l a6,a2
  2587.     adda.l a6,a3
  2588.     adda.l a6,a4
  2589. *
  2590.     movem.w (a6,d6.w),d0-d3
  2591.  
  2592.     sub.w   (a1)+,d2
  2593.     add.w   (a1)+,d0
  2594.     sub.w   (a1)+,d3
  2595.     sub.w   (a1),d1
  2596.  
  2597.     sub.w   (a2)+,d1
  2598.     add.w   (a2)+,d3
  2599.     add.w   (a2)+,d0
  2600.     add.w   (a2),d2
  2601.  
  2602.     sub.w   (a4)+,d3  * d3 = S1*cos7+S3*cos5+S5*cos3+S7*cos1
  2603.     add.w   (a4)+,d2  * d2 = S1*cos5-S3*cos1+S5*cos7+S7*cos3
  2604.     sub.w   (a4)+,d1  * d1 = S1*cos3-S3*cos7-S5*cos1-S7*cos5
  2605.     add.w   (a4),d0   * d0 = S1*cos1+S3*cos3+S5*cos5+S7*cos7
  2606.  
  2607.     sub.w   d4,d5  * d5=s0-s4
  2608.     add.w   d4,d4
  2609.     add.w   d5,d4  * d4=s0+s4
  2610. *
  2611.     move.l  -4(a6,d7.w),d7
  2612.     add.w   -4(a3),d7    * d7 =S2*cos2+S6*cos6
  2613.  
  2614.     sub.w   d7,d4    * d4=s0+s4-S2*cos2-S6*cos6
  2615.     add.w   d7,d7
  2616.     add.w   d4,d7    * d7=s0+s4+S2*cos2+S6*cos6
  2617. *
  2618. *  S'(u,0),S'(u,7)
  2619. *
  2620.     sub.w   d0,d7    * d7=S0-S1*cos1+S2*cos2-S3*cos3+S4-S5*cos5+S6*cos6-S7*cos7
  2621.     add.w   d0,d0
  2622.     add.w   d7,d0    * d0=
  2623. *
  2624. *  S'(u,3),S'(u,4)
  2625. *
  2626.     sub.w   d3,d4
  2627.     add.w   d3,d3
  2628.     add.w   d4,d3
  2629.  
  2630.     move.w  d7,-(sp)      * S'(u,7) = d2+d3-d4
  2631.     move.w  d4,3*16(sp)   * S'(u,4) = d2-d3-d4
  2632.     move.w  d3,4*16(sp)   * S'(u,3) = d2-d3+d4 = d2-d3-d4 + 2*d4 = S'(u,4) + 2*d4
  2633.     move.w  d0,7*16(sp)   * S'(u,0) = d2+d3+d4 = d2+d3-d4 +2*d4 = S'(u,7) + 2*d4
  2634. *
  2635.     swap.w  d7
  2636.     sub.w   -(a3),d7    * d7 =S2*cos6+S6*cos2
  2637.     sub.w   d7,d5    * d5=d5-d6
  2638.     add.w   d7,d7
  2639.     add.w   d5,d7    * d6=d5+d6
  2640. *
  2641. *  S'(u,1),S'(u,6)
  2642. *
  2643.     sub.w   d1,d7
  2644.     add.w   d1,d1
  2645.     add.w   d7,d1
  2646. *
  2647. *  S'(u,2),S'(u,5)
  2648. *
  2649.     sub.w   d2,d5
  2650.     add.w   d2,d2
  2651.     add.w   d5,d2
  2652.  
  2653.     move.w  d1,6*16(sp)   * S'(u,1) = S2*cos6+S6*cos2
  2654.     move.w  d2,5*16(sp)   * S'(u,2) = 
  2655.     move.w  d5,2*16(sp)   * S'(u,5) = 
  2656.     move.w  d7,1*16(sp)   * S'(u,6) = S2*cos6+S6*cos2
  2657.  
  2658.     move.w    (a5)+,d5
  2659.     jmp    (a5,d5.w)
  2660.  
  2661. .end
  2662.